「Fatal error: Allowed memory size of … bytes exhausted」はメモリ不足でアプリケーションを実行できないというエラーメッセージです。PHPの設定項目「memory_limit」が16Mなどの小さい数字になっていると発生する場合があります。
割り当てられたメモリサイズの確認
現在のアプリケーションに割り当てられたメモリサイズの上限をチェックします。
php.iniで確認する場合
php.iniを直接開くことができる場合は、memory_limitをチェックします。
memory_limit=16M
最近のPHPでは128Mなどに設定されていると思いますが、少し古いPHPから設定を引き継いだ場合は16Mや8Mのような小さい値になっているかもしれません。
phpinfo関数で確認する場合
レンタルサーバーなどでphp.iniを直接確認できない場合は、phpinfo関数で確認する方法があります。次の1行を記述したPHPスクリプト(例:info.php)をアップロードしてサーバーで実行します。
<?php phpinfo(); ?>
アップロードしたページのURL(例:http://example.com/info.php)にアクセスすると、memory_limitを確認できます。
2つの数値は次のとおりです。
- 右側(Master Value) — 元の設定値
- 左側(Local Value) — 元の設定値を.htaccessなどで上書きした現在の値
左側が現在の設定値なので、右側のメモリサイズが256Mなどで、左側が16Mになっていれば、.htaccessなどでメモリ上限を明示的に小さくしていることが原因です。
左右共に16Mの場合は元の設定値が小さいので、.htaccessなどで上書きする必要があります。
メモリサイズ上限の設定
メモリサイズを設定する方法はいくつかあります。php.iniを編集できる場合は「memory_limit=16M」を256Mなどに変更してください。ただし、どこまで大きくして良いのかは、サーバー環境によって異なります。
php.iniを編集できない場合、.htaccessに次のようなコードを追加する方法があります。
php_value memory_limit 256M
元の値(Master Value)より大きいメモリ上限(Local Value) が設定されます。
これで、「Fatal error: Allowed memory size of」は解消されるはずです。