
「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]
とすると、上限なくメモリを割り当てることも可能です。
http://php.net/manual/ja/ini.core.php
最後に apache を再起動すれば完了。
[default]
/usr/local/apache2/bin/apachectl restart
[/default]
以上です。