![](/img/trans.png)
[英]PHP Composer update "cannot allocate memory" error (using Laravel 4)
[英]Can not allocate memory error when install passport in laravel using composer
我正在通過 Composer 使用命令在 laravel 中安裝通行證
$ composer require laravel/passport
Using version ^6.0 for laravel/passport
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
mmap() failed: [12] Cannot allocate memory
mmap() failed: [12] Cannot allocate memory
Fatal error: Out of memory (allocated 483401728) (tried to allocate 8388608 bytes) in phar:///opt/cpanel/composer/bin/composer/src/Composer/DependencyResolver/Solver.php on line 220
我遇到了以上錯誤,如果您有任何解決方案,請幫助我。
我能夠通過暫時刪除 PHP 的內存限制來安裝 Passport。 我在這里找到了這個想法: https : //laravel.io/forum/02-11-2014-composer-running-out-of-memory
$ php -d memory_limit=-1 /usr/local/bin/composer require laravel/passport --verbose --profile
我喜歡這個解決方案,因為它只覆蓋 PHP 限制一次,所以它允許您向前推進而不會產生任何持久影響。 這將允許您等待,看看您以后是否會繼續遇到問題,例如在生產環境中等。
我相信默認的 PHP 安裝分配了 500 MB~ RAM,當我運行上面的命令時,它消耗了 712 MB 的 RAM。
額外說明
在上面的 URL 中,還提到在生產環境中提交
composer.lock
文件。 從歷史上看,例如,如果您在 MacOS 或 Windows 上開發本地機器,而您的生產環境是 Linux,這可能是一個問題。 這可能不太可能,但由於任意軟件包根據檢測到的操作系統確定要選擇的依賴項,因此人們可能會遇到問題。 如果您提交鎖定文件,則您正在緩存包/版本。 性能優勢將由此產生,但緩存會產生剛性。我不確定我所說的話的真實可能性。 我說的是
composer
,但我已經用npm
和 JavaScript 看到了它。
嘗試以下步驟:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
在 composer.json 項目的根目錄中的 require "require": { "laravel/ui": "^1.1"
} 和接下來, composer update
內存限制錯誤。
Composer 有時可能會在某些命令上失敗並顯示以下消息:
PHP 致命錯誤:XXXXXX 字節的允許內存大小已用完 <...>
在這種情況下,應該增加 PHP memory_limit。
Note: Composer internally increases the `memory_limit` to 1.5G.
要獲取當前的 memory_limit 值,請運行:
php -r "echo ini_get('memory_limit').PHP_EOL;"
嘗試增加php.ini
文件中的限制(例如/etc/php5/cli/php.ini
用於類似 Debian 的系統):
使用 -1 表示無限制或定義一個顯式值,如 2G memory_limit = -1
Composer 還遵守由COMPOSER_MEMORY_LIMIT
環境變量定義的內存限制:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
或者,您可以使用命令行參數增加限制:
php -d memory_limit=-1 composer.phar <...>
當 shell fork 炸彈保護被激活時,這個問題也可能發生在 cPanel 實例上。 有關更多信息,請參閱 cPanel 站點上的 fork 炸彈功能文檔。
這個答案也可能有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.