[使用Capifony部署Symfony2项目时,PHP发生致命错误

问题描述 投票:3回答:3

将我的Symfony2项目部署到服务器时,偶尔会出现以下错误:

PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): 
fork failed - Cannot allocate memory' in 
in phar:///var/www/xyz.co.uk/releases/20130320161122/composer.phar/vendor/
symfony/console/Symfony/Component/Console/Application.php:982

更新

下面是完整的错误消息,发生在--> Updating Composer dependencies之后:

*** [err :: x.xx.xx.xxx] PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///var/www/xyz.co.uk/releases/20130320161815/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:982
*** [err :: x.xx.xx.xxx] Stack trace:
*** [err :: x.xx.xx.xxx] #0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///var/www...', 982, Array)
*** [err :: x.xx.xx.xxx] #1 phar:///var/www/xyz.co.uk/releases/20130320161815/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(982): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
*** [err :: x.xx.xx.xxx] #2 phar:///var/www/xyz.co.uk/releases/20130320161815/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(900): Symfony\Component\Console\Application->getSttyColumns()
*** [err :: x.xx.xx.xxx] #3 phar:///var/www/xyz.co.uk/releases/20130320161815/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(865): Symfony\Component\Console\ in phar:///var/www/xyz.co.uk/releases/20130320161815/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 982
*** [deploy:update_code] rolling back
failed: "sh -c 'sh -c '\\''cd /var/www/xyz.co.uk/releases/20130320161815 && php composer.phar update --no-scripts --verbose --prefer-dist'\\'''" on x.xx.xx.xxx

这并非始终发生,只是有时。我已经在服务器上的apache和cli php.ini文件中分配了256M,但有时仍会收到错误。

Symfony需要多少内存?我需要进一步增加吗?我以为就足够了。

php memory symfony fatal-error capifony
3个回答
1
投票

是的,Symfony总是比那里的大多数框架都要重,但是此错误有点荒谬。我之所以这样说是因为我的生产机器总共有512MB的RAM,并将128M分配给PHP-而且,应用程序仍然表现出色。

现在,由于复杂性在这里起着主要作用,您在哪里发生错误

?在缓存预热/清洁期间?您是否要运行一些custom console command

而且,您是否尝试安装APC

?这样做之后,我的应用程序开始大火:)

1
投票

根据GitHub上的这篇文章:https://github.com/composer/composer/issues/945看来您需要最少


0
投票

某些symfony部署需要大量内存来存储更新存储库。另外,如果使用capifony,可能会出现很多内存错误。部署在小型VPS或专用于少于1-2 GB RAM的技巧是创建一个SWAP,您将在其中存储所需的内存。因此,例如,您可以尝试使用以下命令创建1 GB的交换空间:

© www.soinside.com 2019 - 2024. All rights reserved.