昨日とあるWEBサーバでページが表示されない事件が発生しました。
色々調べていると、apacheのerror_logに題名の
[notice] child pid 11737 exit signal File size limit exceeded (25)のエラーが大量に、、、。
何のこっちゃ!?でしたが、とりあえず何かのファイルサイズがでかすぎる!という意味みたい。
ログファイルを見ていると、phpのエラーログが
$ ls -l php_error_logで止まっている。
-rw-r--r-- 1 nobody root 2147483647 Jun 21 10:30 php_error_log
中身がとあるNOTICEレベルのエラーがずらーり。
というわけで
# mv php_error_log php_error_log.0 && touch php_error_log && chown nobody php_error_logしてapacheを再起動したら正常に稼働しはじめました。
Linuxには2GBの制限問題というものがある、と初めて知りました。
参考:Linuxで2GBを超えるファイルを作れない::0と1の欠片
まぁ、単純にファイルを削除するとかファイル名を変えるとかで対応できますが、32BitのLinuxOSだと問題ありそうです。
apacheのコンパイル時に
# CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" ./configure --prefix=/usr/local/apache2とかやれば2GBの問題はなくなるそうです。
参考:httpdで2GBを超えるファイルのリクエストに対応する方法::サラダ(*)
以上でぇぇぇえす。