PHPで使用可能なメモリサイズエラー発生時の対応策
PHPとは、オープンソースの汎用スクリプト言語であり、特にWeb開発に広く使われ、HTMLに埋め込むことができる。HTML文書中に記述されたスクリプトをPHPが実行し、その結果を HTMLデータとしてWebブラウザに出力する。また、PHPは大規模な開発にも多く用いられているが、文法が平易なため初心者でも習得しやすいスクリプト言語である。
設定ファイルである[php.ini]は、PHPの起動時に読み込まれる。PHPのサーバーモジュール版では、Webサーバーの起動時に一度だけ読み込まれるが、CGI版と CLI版ではスクリプトが呼び出される度に読み込まれる。
このページでは、PHPの実行中に「使用可能なメモリサイズエラー」が発生した場合の対対応策を記す。
・ 最大実行時間エラーの対応策は以下を参照。
以下のエラーは、PHPスクリプトがサーバーに割り当てられたメモリをオーバーして使用した時に吐き出される[メモリサイズエラー]である。
Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate xxx bytes) in /xxx/xxx.php on line xxx.
※上記ブルーの部分は、設定環境によって違ってくる。
▶ 対応策
PHP設定ファイルで、最大使用メモリを指定する[memory_limit]を、スクリプトが確保できる最大メモリをバイト数で指定する。
なお、上限無しで無制限に使用する場合は[ - ]マイナスを付与する。
⑴ php.ini の [ memory_limit = 125M ] を変更する。
512Mに変更する場合 [ memory_limit = 512M ]
無制限に変更する場合 [ memory_limit = -1 ]
⑵ プログラム内に追記して変更する場合。
<?php ini_set('memory_limit', '512M'); ?>
⑶ .htaccessを作成または追記して変更する場合。
php_value memory_limit 512M
※変更後の復元について
上記 (1)php.ini の設定を変更した場合は、Apacheを再起動させて再度読み込むと変更後の設定が復元される。また、(2)は追記プログラムを、(3)については作成または追記したディレクトリ内とその下層のディレクトリ内のプログラムを起動させると復元される。