我试图使用Composer在我的一个Laravel 4项目上安装aws / aws-sdk-php,我不记得确切的事件链但它没有成功安装.从那时起,我一直在收到Composer内存不足的错误 – 致命错误:在phar:///usr/local/bin / composer / src / Composer中,允许的内存大小为536870912字节耗尽(试图分配32个字节)第52行的/DependencyResolver/RuleWatchGraph.php.
我将php.ini memory_limit增加到-1,这仍然发生在我的开发和生产环境中(生产是Cent OS 6).如果我在运行composer_update时通过CLI增加memory_limit,则安装成功完成,但这需要一个永恒的时间.
是否需要清除某种缓存以防止Composer内存不足?我觉得每次运行composer update时它仍在尝试安装AWS SDK.
作曲家文件
<code>{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.0.*",
"rtablada/package-installer": "dev-master",
"mogreet/mogreet-php": "dev-master",
"twilio/laratwilio": "dev-master",
"balloon/elephant.io": "dev-master",
"facebook/php-sdk": "dev-master",
"way/generators": "dev-master",
"codesleeve/asset-pipeline": "dev-master",
"natxet/CssMin": "dev-master"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/libraries"
]
},
"scripts": {
"post-install-cmd": [
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev"
}
</code>
解决方法:
编辑:在继续前进之前,请确保您运行的是最新版本的composer,您可以通过composer自我更新来更新它
当您运行composer update时,它将为每个库(或最新版本)计算最新的gitref,然后将安装该版本的库.然后它会将这些版本存储在composer.lock文件中.
运行composer install时,它只会安装composer.lock文件中定义的版本.
组合器更新花费这么长时间并使用如此多内存的原因是因为它必须跟踪每个库的版本,将其与您在composer.json中定义的版本进行比较,然后检查所有库的依赖项.这是一个非常密集的过程.
我发现使用hhvm运行composer(你可以安装它here)可以大大加快作曲家更新过程.
除此之外,您只需要使用高内存使用量并在php.ini文件中增加它.确保更新与CLI相关的那个.
编辑:您永远不应该在生产环境中运行composer update.您应该只在开发时更新依赖项,然后在生产环境中使用composer install来安装上次使用的一组编写器依赖项.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!