ZAPAnet総合情報局 > ZAPAブログ2.0 > PHPのエラーログが肥大してPHPが動かなくなった話

PHPのエラーログが肥大してPHPが動かなくなった話

2012年11月25日 プログラミングTIPS
PHP(Hypertext Preprocessor)の最新バージョンPHP 5.4.9が11月22日にリリースされたので、うちのサーバーにも入れてみました。ちょうどXCacheの最新バージョンも先月リリースされていたので、ちょうど良いタイミングだと思い、今さらながらPHP5.4系にアップデートしてみました。

PHP公式サイトのDownloadsページからソースコードをダウンロードして、コンパイルしてインストール。手順は、いつも通りのはずです(下記参照)。

と思ったら、動かない。ダウンロードしたPHPのソースコードから、ちゃんとconfigureを設定してmakeしてinstallしたのに、動かない。

httpd.confとphp.confを見直しても動かない。

動かないままXCacheの方も新しくインストール。

動かない。

PHPのバージョンを確認してみようと、PHPバージョン確認コマンドを打ってみました。
php -v
ファイルサイズ制限を超過しました
ファイルサイズ制限を超過しました!?

PHPを実行しようとすると、なぜかファイルサイズ制限に引っかかる…。初めての現象。httpd.confとphp.confを見直して、XCacheを見直しても動かない。

なお、XCacheの設定は、zend_extensionからextensionに変更になっていました。

ちょっと理由がわからないので、しばらくコンソール画面と格闘。

PHPエラーログの/var/log/phplogを確認してみる。重い…。
ファイルの後ろから表示しようとtailコマンドを打ってみる。古い…。

古い!?


あっ…!!


どうやら、PHPのエラーログが肥大化して、ファイルサイズ制限を超過していたようです。ログファイルは、自動でログがローテーションする設定にしていたと勘違いしていました。32bitOSの限界までファイルサイズが肥大化して、PHPが動かなくなっていたようです。

新しいエラーログを作って、PHPバージョン確認コマンドを再度打ってみました。
php -v
PHP 5.4.9 (cli) (built: Nov 24 2012 13:57:42)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with XCache v3.0.0, Copyright (c) 2005-2012, by mOo
with XCache Cacher v3.0.0, Copyright (c) 2005-2012, by mOo
今度は、PHP 5.4.9がしっかりと動きました。XCacheも正常に動いています。

あまりこういうエラーに遭遇している人はいないかと思いますが、気を付けてください。


それから、このままではエラーファイルが肥大化する度にPHPが止まってしまうので、logrotateを設定しておきました。まずlogrotateの設定ファイルの中身を確認します。
vi /etc/logrotate.conf

そして、PHPログファイル用の設定ファイルを新規に作ります。
vi /etc/logrotate.d/php

他の設定ファイルを参考に、適当に設定してみました。
/var/log/phplog {
weekly
rotate 12
missingok
notifempty
}

一応エラーチェックテストをしてみました。
/etc/cron.daily/logrotate -dv /etc/logrotate.d/php
エラーは出なかったので、毎週PHPのログがローテーションして、肥大化は防げるはずです(まだ確認していませんが)。


これで無事PHP5.4系が動くようになった…かと言えば、全然そんなことはなく、エラーだらけでまいりました。うちのサイトで使いまくっているPukiWikiでエラーでまくりでした。pukiwikiのオフィシャルサイトは、なかなか更新されませんし、不具合対策が大変でした。手作業で一つ一つ直しました。また、PHP5.4系ではhtmlspecialcharsの第三引数の仕様が大きく変わっていたんですね。これの手直しも大変でした。

ということで、今は無事PHPは動くようになっているはずです(この文章が読めていれば)。