decoy
youtu****@gmail*****
2009年 8月 6日 (木) 23:24:19 JST
decoyです。 現在、SVNに上がっているCodeIgniterですが、 PHP5で実行すると必ずfatalエラーになってしまうようです。 原因は、下記のとおりです。 昨日公開された system/codeigniter/CodeIgniter.php の 61行目のPHP5.3かどうかを判断する部分で is_php() の第一引数に5.3(float型)を渡していますが 渡した引数を内部でキーとして使っている為、is_php() に5.3を渡しても5として扱われてしまいます。 (つまり、5.3かどうかを判断するはずの部分で「5ではない」という判断になってしまいます。) その為、その後のPHP5かどうかを判断する部分(system/codeigniter/CodeIgniter.php の137行目)で PHP5でも、PHP4として扱われてしまい、Fatal error: Call to a member function _ci_autoloader() on a non-object in C:\home\codeigniter_svn\system\libraries\Controller.php on line 83 が必ず出てしまいます。 回避策は主に下記の2つかと思われます。 1. system/codeigniter/CodeIgniter.php の61行目を下記のように書き換える。 if ( ! is_php(5.3)) → if ( ! is_php('5.3')) → float型ではなく、system/codeigniter/Common.php の41行目で実施しているように、string型で渡す 2. system/codeigniter/Common.php の is_php() の中で$versionを強制的にstring型へキャストする。 → is_php() に引数を渡す際にfloat型の場合のみ '' で括ってstring型にするのが 面倒くさい場合は、この方法もアリかなと思ってます。 以上です。 // decoy