Composer在每个项目上耗尽内存,Mac OS X.

Nig*_*ICU 12 php composer-php laravel-4

我试图在aws/aws-sdk-php昨天使用Composer在我的一个Laravel 4项目上安装,我不记得确切的事件链但它没有成功安装.从那以后,我一直在收到Composer内存耗尽的错误 - Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 32 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52.

我将php.ini memory_limit增加到-1,这仍然发生在我的开发和生产环境中(生产是Cent OS 6).如果我memory_limit在运行时通过CLI 增加安装,但安装成功完成,composer_update但这需要一个永恒的时间.

是否需要清除某种缓存以防止Composer内存不足?我觉得每次运行composer update时它仍在尝试安装AWS SDK.

作曲家文件

{
    "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"
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*all 22

编辑:在继续前行之前,请确保您运行的是最新版本的作曲家,您可以通过它进行更新 composer self-update

当您运行composer update它时,将为每个库(或最新版本)计算最新的gitref,然后将安装该版本的库.然后它会将这些版本存储在composer.lock文件中.

运行时composer install,它只是安装composer.lock文件中定义的版本.

原因composer update需要很长时间并且使用如此多的内存是因为它必须跟踪每个库的版本,将其与您在其中定义的版本进行比较composer.json,然后检查所有库的依赖项.这是一个非常密集的过程.

我发现运行作曲家使用hhvm(你可以在这里安装)可以composer update 大大加快这个过程.

除此之外,您只需要使用高内存使用量并将其增加到php.ini文件中.确保更新与CLI相关的那个.

编辑:你永远不应该composer update在生产环境中运行.您应该只在开发时更新依赖项,然后composer install在生产环境中用于安装上一组使用的编写器依赖项.


Ant*_*iro 17

目前,Composer上存在一个错误,导致内存耗尽.

如果你这样做

composer install
Run Code Online (Sandbox Code Playgroud)

然后删除供应商内的文件夹

rm -rf vendor/laravel
Run Code Online (Sandbox Code Playgroud)

并做

composer update
Run Code Online (Sandbox Code Playgroud)

你会收到这个错误.这是一个错误,它不应该耗尽内存.

现在,您可以通过以下方式自行修复:

php -d memory_limit=-1 /usr/local/bin/composer update
Run Code Online (Sandbox Code Playgroud)

另外,检查这个帖子,他们即将修复此问题.

  • 谢谢!是的,`php -d memory_limit = -1/usr/local/bin/composer update`是我目前运行它的唯一方法 (4认同)

shi*_*tel 15

试试这个.它解决了我的问题.我想更好的方法来修复它而不是更新内存.

sudo composer self-update
Run Code Online (Sandbox Code Playgroud)


ins*_*ign 6

很简单,输入以下命令:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

应该适用于低内存机器或其他内存问题