php.iniのmemory_limit

php5.5のEOLが5日後。試験環境でphp5.6にバージョンアップして一通り動作確認して、問題ないようなので、本番環境でバージョンアップ。

バージョンを確認しようと、phpinfo()を叩くとこんなエラーが。

# /usr/bin/php -r 'phpinfo();'
PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 32 bytes) in Command line code on line 1

む、メモリが足りないだと?
/etc/php.iniのmemory_limitはこんな。

memory_limit = 512MB

うーんなんでだ。と悩むこと半日ほど。
こういうときはマニュアルを読むのだ。

memory_limit integer

スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。

integerを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。

"integer"ってことは数字ってことだな。短縮表記については以下の通り。

有効なオプションは K(キロバイト)、M(メガバイト)および G(ギガバイト: PHP 5.1.0 以降で有効)です。これらはすべて、大文字小文字を区別しません。 これ以外の文字はバイト値と判断されます。 1M は、1 メガバイトあるいは 1048576 バイトと等しくなります。1K は、1 キロバイトあるいは 1024 バイトです。この表記法は、 php.ini や ini_set() 関数で使えます。 

ん?"MB"って書くといけないのか。
ってことで、以下に修正。

memory_limit = 512M

おお、ちゃんと動作した。へー、そうなんだ。
5.5だと大丈夫だった。。と思う。