PHP5.3.xの問題あるバージョン
5.3.3以前
今まで正常に動作していたPHPのアプリケーションが、突然ランダムにページが表示されたり、エラーになったりするという現象に遭遇しました。
ソースコードを追っていくと
#
// こんな感じのクラス
class Obj{
function call(){
$this->hogehoge(); // 何故か Call to a member function 'hogehoge' on a non-object
}
function hogehoge(){
}
}
// 確かにインスタンス化している
$obj = new Obj;
$obj->call();
上記のような感じで、ありえない話ですが何故か$this
が non-object になっていました。
色々調べたところ、Symfony2のREADMEに同じような問題が書いてありました。
before PHP 5.3.4, if you get “Notice: Trying to get property of non-object”, you’ve hit a known PHP bug (see https://bugs.php.net/bug.php?id=52083 and https://bugs.php.net/bug.php?id=50027);
gc関連のバグのようで、5.3.4で修正されているようです。Apacheを再起動すると現象が発生しなくなる、という報告もありました。
自分で管理しているサーバーではなかったためサーバー管理者に伝えた所、 apacheにHUPを送信することで現象は発生しなくなりました。
CentOS6はデフォルトのPHPが5.3.3なのが辛いですが、このバージョンのPHPを使うのは避けた方が良さそうです。
5.3.7以前
before PHP 5.3.8, if you get an error involving annotations, you’ve hit a known PHP bug (see https://bugs.php.net/bug.php?id=55156).
Symfony2のアノテーションがおかしい場合はPHPのバグみたいです。
また、5.3.7には重大なバグがあります。
5.3.16
PHP 5.3.16 has a major bug in the Reflection subsystem and is not suitable to run Symfony2 (https://bugs.php.net/bug.php?id=62715)
5.3.16はリフレクションがおかしいのでSymfony2では使えないみたいです。