【XServer】composerでライブラリインストール時にメモリエラーの解決法

この記事からわかること
- XServerにSSH接続後のエラー
- エラー発生:composerでライブラリをインストール
- PHP Fatal error: Allowed memory size of 2097152000 bytes exhaustedの原因と解決法は?
index
[open]
\ アプリをリリースしました /
XServerにデプロイしているLaravelプロジェクトでcomposerを使いライブラリをインストールしようとした際に発生したエラーの原因と解決法をまとめていきます。
composerでライブラリインストール時に起きたメモリエラー
XServerにSSHで接続後、composerを使ってライブラリを組み込もうとした際に予期せぬエラーが発生してしまいました。
ライブラリ「intervention/image」を組み込むコード
発生したエラー
このエラーは調べたところphp.iniに設定されているメモリ上限をオーバーした際に出るエラーのようです。
これを解決する方法は1つ。
php.iniに設定されているメモリ上限を増やす
なので早速上限を増やすために試行錯誤していきます。
XServerのphp.iniはどこにある?
ではXServerの「php.ini」はどこにあるのでしょうか?
実はphp.iniは2ヶ所あります。
XServerのphp.ini
- 通常のphpのphp.ini
- CLI(コマンドライン)版のphpのphp.ini
ここでいう通常の「1.通常のphpのphp.ini」とはサーバーパネルで変更可能になっている部分です。
「Xサーバーパネル」にログインすると「PHP」>「php.ini設定」という項目が用意されています。

ここで「php.ini」の設定変更を行うことが可能ですが、実はcomposerでインストールしようとした際に起きている「PHP Fatal error
」は別のphpから発生していました。
CLI版 PHPのphp.iniを変更する
CLI版のphpはXserverにSSH接続後に使用していくphpです。以下コマンドでSSH接続後、CLI版 PHPの存在を確認してみます。
バージョンを確認するとPHP 8.0.6 (cli)
の文字が出てきます。これはサーバーパネルから変更できるphpとは別物なので、サーバーパネルでバージョンを変更してもCLI版のバージョンは変わりません。
では現在CLI版に設定されている「php.ini」の中身を以下のコマンドで見てみます。
するとメモリ上限を設定しているmemory_limit
がありました。
ちなみにこれだともっと簡単にいけました。
ではここから「php.ini」の中身を変更していきます。
XServerのCLI版「php.ini」の中身を変更する
まずは「php.ini」が格納場所のパスを返してくれるコマンドを使ってどこにあるか探します。
すると/opt/php-8.0.6/etc/php.ini
にあると教えてくれたのでVimを使って編集を試みます。
すると以下のようなメッセージが表示されパスワードを求められました。
そして自分のサーバーパスワードを3回試したのですが失敗してしまいました。
調べてみると私たちユーザーが変更できる範囲を/opt/php-8.0.6/etc/php.ini
は超えてしまっているようです。
つまり、「CLI版phpで使えるメモリは2000Mまで」ということですね。。。。
インストールするための解決法
このままではインストールできないので是非はわかりませんが、とりあえず解決する方法をお伝えします。(やる時は自己責任でお願いします。)
composerではインストール時に一時的にメモリのリミットを外せるコマンドが存在します。
これはCOMPOSER_MEMORY_LIMIT
に-1(無制限)
を渡すことでこのコマンド実行時のみ設定を変更できるコマンドです。
なので私も以下のように実行してみました。
無事インストールに成功しました!!
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。