将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需要多少内存?我需要进一步增加它吗?我认为这就足够了。
答案 0 :(得分:1)
根据GitHub上的这篇文章:https://github.com/composer/composer/issues/945看起来你需要至少 1GB的内存供PHP使用。
Symphony非常记忆,虽然1Gb可能听起来很荒谬,但对于它所执行的处理类型来说,它绝对不是不可能的。如果它告诉你内存不足,你唯一的选择是添加更多内存。
您可能还想在一周左右的时间内查看一下,看看他们是否还没有修补某些内存泄漏。
答案 1 :(得分:1)
是的,Symfony
总是比大多数框架都重,但这个错误有点荒谬。我这样说是因为我的生产机器总共有512MB RAM,而且128M分配给了PHP - 而且,应用程序表现非常出色。
现在,因为复杂性在这里发挥了重要作用,您在哪里发生错误?在缓存预热/清洁期间?您是否尝试运行某些自定义控制台命令?
另外,您是否尝试过安装 APC ?这样做之后,我的应用程序变得炽热:)
答案 2 :(得分:0)
某些symfony部署需要大量内存用于更新存储库。此外,如果您使用capifony,您可能会遇到很多内存错误。在小型VPS中部署或专用于少于1-2 GB RAM的技巧是创建一个SWAP,您可以在其中存储内存需求。例如,您可以尝试使用以下命令创建1 GB的交换:
# /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
# /sbin/mkswap /var/swap.1
# /sbin/swapon /var/swap.1