作曲家proc_open():分叉失败-无法分配内存

Pdi*_*ity 6 out-of-memory composer-php centos7

运行时我和其他人有同样的错误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
Run Code Online (Sandbox Code Playgroud)

...但是有一个很大的实例:4GB RAM和4GB交换。可用的RAM永远不会用完,更不用说可用/缓存的RAM了,交换也没有被触及!

              total        used        free      shared  buff/cache   available
Mem:           3788         885        1908           9         993        2692
Swap:          3967           0        3967
Run Code Online (Sandbox Code Playgroud)

这是这台新机器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机器一样),因此我们需要使用我们以前使用的相同方法。

Pdi*_*ity 5

好的,所以 CloudLinux 将用户的内存限制为 1024mb,因为当限制增加一倍到 2048mb 时它可以工作。

这与我们之前的服务器 (CentOS/CloudLinux 6.x) 上的设置相同,但看起来每个版本的 CentOS 都比其他版本更需要内存。

奇怪的是,使用 --profile 运行 composer 显示它使用的最多是 482mb。即使分叉时它翻倍(正如所建议的那样),它仍然低于 1024mb 限制。