一馬力のメモ帳

MVSからLinuxまで。基盤屋さんは眠らない

PHP memory_limitの修正(Error: Allowed memory size of 〜が出た時の対処法)

PHPで大きなデータを扱おうとしていると

Error: Allowed memory size of 134217728 bytes exhausted

のエラーを吐く事がある。
今回はこのErrorに対する対応方法。memory_limitの修正のメモ

目次


まずは現状の確認(php -iコマンド)

phpの設定値(php.ini)の内容をコマンドラインから確認
"php -i"コマンドでphpinfo();と同等の内容を確認できる

[root@CentOS6 ~]# php -i |grep memory_limit
memory_limit => 128M => 128M

php.iniの修正(memory_limitの修正)

php.iniに記載されている値を修正する。 デフォルトは128Mとなっている(PHPのバージョンによって値は異なる)

[root@CentOS6 ~]# vi /etc/php.ini
〜
; Maximum amount of memory a script may consume (128MB)
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = 128M ;*** ここを修正する ***

変更の確認(diffとphpコマンドで確認)

今回は128Mの倍の256Mに変更してみた。
変更内容をdiffとphp -iで確認してみる。

  • diffの結果
[root@CentOS6 ~]# diff /etc/php.ini.org /etc/php.ini
457c457
< memory_limit = 128M
---
> memory_limit = 256M
  • php -iの結果
[root@CentOS6 ~]# php -i |grep memory_limit
memory_limit => 256M => 256M

参考

phpバージョン memory_limitデフォルト値
PHP 5.3.x 128M
PHP 5.2.x 16M
PHP 5.2.0以前 8M

試した環境

[root@CentOS6 ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@CentOS6 ~]# uname -a
Linux CentOS6.6 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@CentOS6 ~]# php -v
PHP 5.3.3 (cli) (built: Jul  9 2015 17:39:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies