簡體   English   中英

使用 Capifony 部署 Symfony2 項目時出現 PHP 致命錯誤

[英]PHP Fatal error when deploying Symfony2 project using Capifony

將我的 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 需要多少內存? 我需要進一步增加嗎? 我以為這就夠了。

根據 GitHub 上的這篇文章: https : //github.com/composer/composer/issues/945看起來您至少需要 1GB 的內存可用於 PHP。

Symfony 是一個非常消耗內存的人,雖然 1Gb 可能聽起來很荒謬,但對於它所執行的處理類型來說,它絕對不是不可能的。 如果它告訴您內存不足,您唯一的選擇就是添加更多內存。

您可能還想在一周左右的時間回來檢查一下,看看他們是否也沒有修補某種內存泄漏。

是的, Symfony總是比那里的大多數框架更重,但是這個錯誤有點荒謬。 我這么說是因為我的生產機器總共有 512MB 的 RAM,128M 分配給 PHP - 而且,應用程序仍然表現出色。

現在,因為復雜性在這里起着重要作用,哪里發生錯誤 在緩存預熱/清理期間? 您是否正在嘗試運行一些自定義控制台命令

另外,您是否嘗試過安裝APC 這樣做后,我的應用程序變得異常火爆:)

一些 symfony 部署需要大量內存來更新存儲庫。 此外,如果您使用capifony,您可能會遇到很多內存錯誤。 在小型 VPS 或專用內存少於 1-2 GB 的情況下部署的技巧是創建一個 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM