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スクリプトがサーバーに割り当てられたメモリをオーバーして使用した時に吐き出される[メモリサイズエラー]である。
※ 上記ブルーの部分は、設定環境によって違ってくる。
● 対処法
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
※ 変更後の設定反映について
上記❶ php.ini の設定を変更した場合は、Apacheを再起動させて再度読み込むと変更後の設定が反映される。また、❷ は追記プログラムを、❸については作成または追記したディレクトリ内とその下層のディレクトリ内のプログラムを起動させると反映される。