Controllerにある種のPHP文法エラーがあると、画面が真っ白でログにも何も出ない。
また嵌りました。PHP5で書いたスクリプトを事情によりPHP4のAkelosに移してて、そこで、Controllerに、PHP5でのクラス変数を使っている部分を残してました。
<?php class FooController extends ApplicationController { function index() { // ... $var = Klass::Value; // ... } }
すると、画面が真っ白けになってしまい、PHPのエラーログ出力にも何も出ないという恐怖の現象が発生しました。
原因は、AkRequest#recognize()中でcontrollerのファイルをinclude_onceしていますが、こんな感じでエラー抑制の"@"をつけているからです。
akelos-0.7.1/lib/AkRequest.php :
... function &recognize($Map = null) { // ... if(@!include_once($controller_path)){ trigger_error(...); }
したがって、もしも上述のような現象になってしまう場合は、controllerファイルのPHP文法を確かめ、少なくともFatalエラーが出ないことを確認する必要があります。php-cliの"-l"オプションでLintさせても良いでしょうし、あるいは上の"@"を外してしまうのも良いでしょう。
どちらにせよ、エラーログにすら何も出ないというのは手がかりが0なので、非常に厄介です。
っつーかはっきり言って余計なお世話以外の何者でも無いんだけど。controllerって開発者しか触らないんだから、それがエラーだったらちゃんとエラーを出力して欲しいんだが。前にも何度かこれで嵌って、弄っているうちに解決したので気がつかなかったけど、いったいこれで何時間無駄にした。何のためのフレームワークかっつーの。あー、ホントむかつく。