【対策!】Fatal error: Allowed memory size of … が出たら

【この記事の所要時間 : 約 4 分

PHPを使ったプログラムを使っていると、以下のようなエラーがでる場合がある。PHPを使った画面をブラウザから見ている場合は、ブラウザに白背景、黒文字で表示されることもある。
このエラーの原因は、「メモリ不足」である。つまり、PHPで大量にデータを処理したため設定されたメモリの上限値を超えてしまったというエラーメッセージである。

Fatal error: Allowed memory size of ******* bytes exhausted (tried to allocate ******** bytes) in /****.php on line *****

よって、対策は、「PHPで利用できるメモリを増やすこと」である。
実現方法は4つほどある。
 1.「php.ini」変更

memory_limit = 32M

 2.「.htaccess」変更

php_value memory_limit 32M

 3.「phpファイル」変更

ini_set(“memory_limit”,”32M”);

 4.「.user.ini」変更

PHP5.3以降でのみ利用可

詳しくは、以下のサイトを参照のこと。
メモリ不足なので、PHPの最大使用メモリを増加するよう変更 魚拓
レンタルサーバの場合は、1の「php.ini」変更ができない可能性が高いので、2の「.htaccess」変更を行うとできる可能性が高い。それもできないサーバの場合は、エラーが起きるページ全てのPHPに修正を入れる必要がある3の「phpファイル」変更での対応となる。4に関しては、2の派生版なので、1から3でダメなら4というものではない。
xrea や coreserver を使っている人は以下を参照のこと。
PHPメモリー上限変更方法について

php.iniはCGI版PHPでのみ有効となりますので、
モジュール版の場合は、.htaccessで制御する必要があります。
なお、PHPをCGIとして動かす方法につきましては、下記ページに案内がございます。
http://www.coreserver.jp/help/index.php/phpcgi/
各サーバーの設定ファイルは、
エクスリア   :モジュール版PHPの場合「.htaccess」、CGI版PHPの場合「php.ini」
コアサーバー  :モジュール版PHPの場合「.htaccess」、CGI版PHPの場合「php.ini」
バリューサーバー:モジュール版PHPの場合「.htaccess」、CGI版PHPの場合「.unser.ini」
となります。
書式は、
「php.ini」および「.user.ini」の場合は、「memory_limit = 128M」
「.htaccess」の場合は、「php_value memory_limit 128M」
となります。

バッチ処理の場合については、以下のサイトにようにするとOK!
“PHP Fatal error: Allowed memory size of xxx” で落ちる前にできること

$php -d “memory_limit=512M” hoge.php

上記のサイトでは、事前に兆候をつかんでログをはいたりする処理に関することも書かれているので参考になるかと思う。

プログラミングPHP 第3版
プログラミングPHP 第3版
posted with amazlet at 15.11.19
Kevin Tatroe Peter MacIntyre Rasmus Lerdorf
オライリージャパン
売り上げランキング: 31,810
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告