🌊
composer requireしてメモリ不足でFatal errorになったとき
サーバースペック
CentOS:7
PHP:7.2.12
Composer:1.10.6
エラー内容
composer update
コマンドを実行したところ、下記エラーが出力された。
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in /usr/share/php/Composer/DependencyResolver/RuleWatchGraph.php on line
これはphpスクリプト実行時にphp.iniにて割り当てられている以上のメモリが使用されたときに表示されるとのこと。なので、php.iniの割り当てメモリを増やせばエラーにならず実行できる。
php.iniの場所をこのコマンドで確認。
php --ini
確認後、php.iniをvimで開き、MEMORY_LIMITで検索。
vim {directory_path}php.ini
{directory_path}にはphp --ini
で確認したパスを記入。
vimを開いたのち、/
で検索モードにし、MEMORY_LIMIT
と入力する。
該当する行テキストがハイライトされる。
MEMORY_LIMIT=128M
制限なくメモリを使用できるようにするには 128M
の部分を -1
に設定する。
ただし、この場合phpで実行する全てのスクリプトが無制限でメモリを使えるようになってしまう。
重め処理が走ったときにマズイかもしれない。
ならphp.iniを直接編集するのではなく、composer実行時にのみ-1
の指定をできればいいのでは?
composer実行時にのみ-1の設定をする方法
COMPOSER_MEMORY_LIMIT=-1 composer {command}
こうすることで、php.iniを変更せずに必要な時だけ一時的に無制限して実行できる。
Discussion