[Codeigniter-users] SVN版にバグあり (リビジョン:1718)

アーカイブの一覧に戻る

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




Codeigniter-users メーリングリストの案内
アーカイブの一覧に戻る