作曲家更新失败 -- 内存不足

2022-08-30 08:40:55

在我的 VM 上运行时收到此错误:composer.phar update

PHP 致命错误:phar:///bin/composer.phar/src/Composer/Util/RemoteFilesystem.php 第 179 行中允许1073741824 字节的内存大小已耗尽(尝试分配 144115188075867549 字节)

如果需要,则:composer.json

{
        "description" : "The CodeIgniter framework",
        "name" : "codeigniter/framework",
        "license": "MIT",
        "require": {
                "php": ">=5.2.4",
                "videlalvaro/php-amqplib": "2.5.*"
        },
        "require-dev": {
                "mikey179/vfsStream": "1.1.*",
                "videlalvaro/php-amqplib": "2.5.*"
        }
}

VM最近刚刚从错误的磁盘扇区问题中恢复,运行VM的人说VM已移动到新磁盘。在我的VM中只有Java,PHP,httpd,postgre,rabbitmq和网站本身,并且在发生这种情况之前它已经完美地运行了大约4个月。我使用的是 PHP 5.6.11。任何人都可以帮忙吗?


答案 1

查看 Composer 的故障排除 wiki,尤其是内存限制错误部分。

例如,通过像这样运行作曲家:

php -d memory_limit=-1 `which composer` update

我不再收到任何错误。因此,这可能是一个内存不足的问题,可以在不改变默认PHP配置的情况下以内联方式解决。

上面的命令所做的是它将PHP CLI内存限制设置为“无限制”(即-1),然后运行内联命令。composer update

请注意,您应该使用PHP脚本的真实路径,而不是“哪个作曲家”。书面的内联(如我上面的示例)将内联解析到您的完整路径(您可以使用您喜欢的任何形式)。composer.pharwhich composercomposer.phar

注意:如果同时超出物理内存和虚拟内存,上述解决方案也可能失败。如果是这种情况,那么显而易见的解决方案是增加系统的虚拟内存,然后重试。


答案 2

解决我问题的唯一方法是这样做:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

REF: 作曲家故障排除


推荐