2015-06-03 14 views
1

我有這個同樣的錯誤別人:作曲proc_open():叉失敗 - 運行<code>php ~/composer.phar update</code>時無法分配內存

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 

...但有例如: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)上運行作曲家更新。

無奈之下,我已經試過 # php -dmemory_limit=1G ../composer.phar update --no-scripts --prefer-dist ,我已經試圖消除composer.lock和供應商的文件,甚至試圖加入一個臨時交換文件但它確實似乎沒有內存問題 - 錯誤可能被誤導?

proc_open沒有禁用,我也嘗試用shell fork bomb protected禁用,但沒有jive。

會愛上去。

N.B.我意識到提交composer.lock文件並執行作曲家安裝的建議,但是此實例正在用於開發(如以前的CentOS/CloudLinux 6.x機器具有較小的資源規格),所以我們需要使用我們以前使用的方法相同。

+0

我有同樣的問題,增加了內存,但沒有奏效。但是增加 - max_execution_time = 300和max_input_time = 300以及2048MB的內存對我來說很合適 – GAV

回答

1

好吧,這是CloudLinux將用戶的內存限制爲1024mb,因爲它在限制翻倍至2048mb時工作。

這與我們之前的服務器(CentOS/CloudLinux 6.x)的設置相同,但它看起來像CentOS的每個版本都比其他版本的內存要多得多。

奇怪的是,使用--profile運行作曲者顯示其使用最多的是482mb。即使它在分叉時(如已經提出的)增加了一倍,仍然低於1024MB的限制。

1

我遇到了同樣的問題。我的系統有1.5GB內存,這還不夠......作曲家吃得太多,記憶速度非常快。

我唯一的解決辦法是清除緩存並更新到最新版本(1.4.2):

composer clear-cache 

sudo composer selfupdate 
相關問題