【发布时间】:2015-08-17 03:10:13
【问题描述】:
我在运行php ~/composer.phar update时遇到了和其他人一样的错误:
The following exception is caused by a lack of memory and not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:974
Stack trace:
0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///home/te...', 974, Array)
1 phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(974): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
2 phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(784): Symfony\Component\Console\Application->getSttyColumns()
3 phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(745): Symfony\Component\Console\Application->getTerminalDimensions()
4 phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(675): Symfony\Component\Console\Application->getTerminalWidth()
5 phar:///home/tea/composer in phar:///home/tea/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 974
...但使用 large 实例:4gb RAM 和 4gb 交换。空闲 RAM 永远不会用完,更不用说可用/缓存的 RAM,并且不会触及交换!
total used free shared buff/cache available
Mem: 3788 885 1908 9 993 2692
Swap: 3967 0 3967
这是第一次在这台新机器 CentOS/CloudLinux 7.1 (with cPanel) 上运行 composer update。
无奈之下,我试过了
# php -dmemory_limit=1G ../composer.phar update --no-scripts --prefer-dist
我已经尝试删除 composer.lock 和 vendor 文件,甚至尝试添加临时交换文件但它似乎真的不是内存问题 - 错误会被误导吗?
proc_open 未被禁用,我也尝试禁用 shell fork 炸弹保护但没有 jive。
很想提醒一下。
注意我知道提交 composer.lock 文件并进行 composer install 的建议,但是这个实例被用于开发(就像以前的 CentOS/CloudLinux 6.x 机器一样,资源规格更小),所以我们需要使用我们以前使用的方法相同。
【问题讨论】:
-
我遇到了同样的问题,增加了内存,但是没有用。但是增加 - max_execution_time = 300 和 max_input_time = 300 以及 2048MB 的内存对我有用
-
将交换空间增加到 4GB,为我解决了这个问题
标签: out-of-memory composer-php centos7