「Allowed memory size of 16777216 bytes exhausted」が出た場合の対策方法。
2016/09/14
データベースのレコードを phpExcel でエクセル出力させようとした際に遭遇したので、その対策方法を忘備録としてポストします。
Allowed memory size of 16777216 bytes exhausted 対策
memory_limit値を変更
エラーが出たのは、足元に置いている何をやっても自己責任なテストサーバ(CentOS機)。
エラーメッセージは以下のような感じ。
1 |
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] |
Allowed memory size of 16777216 (約16メガ)ってのがポイントっぽいですね。
phpinfo() あたりで調査するとわかるのですが、「memory_limit」値が 16M のデフォルト値で設定されていました。
ここを大きくすれば、当座はしのげるという感じでしょうか。
ということで php.ini を編集します。
ルートに変身して、vi を起動。
1 |
vi /etc/php.ini |
viが起動したら「/」キーを押して検索モードへ。
「memory_limit」をキーワードにしてあっさりと発見。
1 |
memory_limit = 16M |
ってところを、
1 |
memory_limit = 128M |
という風にしてみます。
ちなみに
1 |
memory_limit = -1 |
とすると、上限なくメモリを割り当てることも可能です。
PHP: コア php.ini ディレクティブに関する説明 - Manual
http://php.net/manual/ja/ini.core.php
http://php.net/manual/ja/ini.core.php
最後に apache を再起動すれば完了。
1 |
/usr/local/apache2/bin/apachectl restart |
以上です。