每个项目 Mac OS X 的 Composer 内存不足

2022-08-30 22:32:19

我昨天尝试使用Composer在我的Laravel 4项目之一上安装,我不记得确切的事件链,但它没有成功安装。从那以后,我一直收到Composer耗尽内存的错误 - .aws/aws-sdk-phpFatal 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增加到-1,这仍然发生在我的开发和生产环境中(生产是Cent OS 6)。如果我在运行时通过 CLI 增加安装,安装将成功完成,但这需要很长时间。memory_limitmemory_limitcomposer_update

是否有某种缓存需要清除以防止 Composer 内存不足?我有一种感觉,每次运行 Composer 更新时,它仍在尝试安装 AWS 开发工具包。

作曲家文件

{
    "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"
}

答案 1

编辑:在进一步讨论之前,请务必确保您运行的是最新版本的作曲家,您可以通过以下方式更新它composer self-update

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

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

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

我发现运行作曲家使用(你可以在这里安装它)大大加快了这个过程。hhvmcomposer update

除此之外,您只需要忍受高内存使用率并在文件中增加它。确保更新与您的 CLI 相关的那个。php.ini

编辑:您永远不应该在生产环境中运行。您只应在开发时更新依赖项,然后在生产环境中使用用于安装上次使用的 Composer 依赖项集。composer updatecomposer install


答案 2

目前,Composer上有一个错误,导致内存耗尽。

如果您这样做

composer install

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

rm -rf vendor/laravel

并执行

composer update

您将收到此错误。这是一个错误,它不应该耗尽内存。

现在,您可以通过执行以下操作自行修复它:

php -d memory_limit=-1 /usr/local/bin/composer update

另外,检查此线程,他们即将解决此问题。


推荐