PHP PR

【PHP】メモリー不足(Allowed memory size)というエラー時の対処方法!

【PHP】メモリー不足(Allowed memory size)というエラー時の対処方法!
記事内に商品プロモーションを含む場合があります

メモリエラー:Allowed memory size of ~

とあるシステムの開発時の話なんですが、作成したバッチ処理(そこそこ重め)を実行させると、このようなエラーが!!

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16 bytes) in ・・・

 

単なるメモリー不足のエラーなんですがね!!
PHPを使っている開発案件では、よく直面する有名なエラーです。

 

この場合には、
まずは、php.iniの設定を確認して、割り当てられているメモリの上限を確認します。

で、確認すると、
memory_limit = 128M
となっていました。
※memory_limitの値は、phpinfo()で確認するか、php.iniを開いて直接確認して下さい。

128Mであればデフォルトの設定のままなんですが、これでは足りなかったようですね。。。

因みに、memory_limitに設定しているメモリ量が、PHPのスクリプトを1回実行する度に割り当てられるメモリ上限値になります。
※1リクエスト辺りの上限です。

メモリの割り当てを変更

メモリ不足であれば仕方ないですね。
memory_limitの上限値を上げて対応する必要があります。

ですが、同一サーバ上で複数のサイトを運営しているので、大元のphp.iniの設定変更は他システムへの影響が心配です。
そこで、今回はini_set()関数で対応することに。

 

該当のスクリプトファイルの頭の方に
ini_set(“memory_limit”, “200M”);
を追記してやることで、メモリ制限を200Mにしてやることが可能です。
※メモリの上限は、必要に応じて変更して下さい。

 

因みに、
.htaccessに
php_value memory_limit 200M
と記述して対応する方法もあります。

メモリの上限を解除

あまりおすすめはしませんが、一応、メモリの上限を無くすこともできます。
ini_set(“memory_limit”, “-1”);
とすれば、OKです。

もし、ph.iniを直接変更する場合には、
memory_limit = -1;
と変更して下さい。

また、.htaccessで設定する場合には、
php_value memory_limit -1
と設定して下さい。