eyecatch php

PHP

「Allowed memory size of 16777216 bytes exhausted」が出た場合の対策方法。

2016/09/14

データベースのレコードを phpExcel でエクセル出力させようとした際に遭遇したので、その対策方法を忘備録としてポストします。

Allowed memory size of 16777216 bytes exhausted 対策

memory_limit値を変更

エラーが出たのは、足元に置いている何をやっても自己責任なテストサーバ(CentOS機)。
エラーメッセージは以下のような感じ。

[default]
2014-08-04 10:36:24 Error: Fatal Error (1): Allowed memory size of 16777216 bytes exhausted (tried to allocate 20 bytes) in [/sitepass/cakephp/app/Vendor/phpexcel/PHPExcel/Style/Border.php, line 91]
[/default]

Allowed memory size of 16777216 (約16メガ)ってのがポイントっぽいですね。

phpinfo() あたりで調査するとわかるのですが、「memory_limit」値が 16M のデフォルト値で設定されていました。
ここを大きくすれば、当座はしのげるという感じでしょうか。
ということで php.ini を編集します。

ルートに変身して、vi を起動。

[default]
vi /etc/php.ini
[/default]

viが起動したら「/」キーを押して検索モードへ。
「memory_limit」をキーワードにしてあっさりと発見。

[default]
memory_limit = 16M
[/default]

ってところを、

[default]
memory_limit = 128M
[/default]

という風にしてみます。

ちなみに

[default]
memory_limit = -1
[/default]

とすると、上限なくメモリを割り当てることも可能です。

最後に apache を再起動すれば完了。

[default]
/usr/local/apache2/bin/apachectl restart
[/default]

以上です。

-PHP
-, ,