Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 122880 bytes) in /Applications/MAMP/bin/php/php5.3.6/lib/php/PHP/CodeCoverage/Report/HTML/Renderer/File.php on line 466
MAMPでPHPUnitを実行する際にコードカバレッジを取得しようとしたら、上記のエラーが出たので、対応方法をメモしておきます。原因はPHPのメモリ上限( memory_limit)の設定です。
開発環境
環境は以下の通りです。パスやバージョン等は、必要に応じて読み替えてください。XAMPPも、ほぼ同様の設定で問題ないと思います。
ソフトウェア | バージョン | 備考 |
---|
MAMP | 2.0.5 | /Applications/MAMP にインストール済みとする |
PHP | 5.3.6 | MAMPのPHPを使うものとする |
設定
php.iniの編集を行います。MAMPが標準通りインストールされていれば、 /Applications/MAMP/bin/php/php5.3.6/conf/php.iniにあるはずです。
所在がわからない場合は、 phpinfo()で確かめましょう。MAMPが標準通りインストールされていれば、 http://localhost/MAMP/phpinfo.phpでも確認できます。
| ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 32M ; Maximum amount of memory a script may consume (8MB) |
環境によって違いはあると思いますが、 php.iniの232行目あたりの memory_limitの値を変更しましょう。今回は128Mとしました。
| ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 128M ; Maximum amount of memory a script may consume (8MB) |
Apacheを再起動させれば、完了です。 phpinfo()の memory_limitで、設定が反映されているか確認できます。