我在运行时遇到与其他人相同的错误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(带 cPanel)上运行 Composer 更新。
无奈之下我曾尝试过# php -dmemory_limit=1G ../composer.phar update --no-scripts --prefer-dist
我尝试删除composer.lock和供应商文件,甚至尝试添加临时交换文件但看起来确实不是内存问题- 该错误是否可能被误导?
proc_open 没有被禁用,我也尝试禁用 shell fork 炸弹保护,但没有 jive。
希望大家注意。
注意:我知道提交composer.lock文件并进行composer安装的建议,但是这个实例用于开发(就像之前的CentOS/CloudLinux 6.x机器,资源规格较小),所以我们需要使用我们之前使用的方法相同。