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
参考
memory_limitについて(PHPマニュアル)
http://www.php.net/manual/en/ini.core.php#ini.memory-limit各バージョン毎のmemory_limitデフォルト値
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