気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 47 view

「Fatal error: Allowed memory size of」と表示されるとき

「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) が設定されます。

現在のメモリ上限が256Mに

現在のメモリ上限が256Mに

これで、「Fatal error: Allowed memory size of」は解消されるはずです。

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP