PHP 5.2.4 (WinXP) と php_xdebug-2.0.0-5.2.2.dll の組み合わせで error_log が無効化?
としか思えないような現象に遭遇した。
php.ini :
... zend_extension_ts="C:\...\php_xdebug-2.0.0-5.2.2.dll" xdebug.default_enable = on xdebug.profiler_enable = 0 xdebug.profiler_output_dir = "..."
で、phpinfo()でxdebugがロードされているのを確認後、試しにtrigger_error()を呼んだり、Fatalエラーが発生するスクリプトを動かしてみると、php.ini で error_log に設定しているファイルに何も出力されない。
xdebug.default_enable = off
といった具合で、xdebugを無効化するか、そもそもxdebugのdllのロード設定自体を無くせば、出力されるようになる。
う〜〜〜ん・・・どういうことだ、これ・・・。xdebugにバグレポート挙げなきゃ駄目かな・・・。Google先生に訊いても、あまりコレといったものが見つからない。
同様の現象に嵌った方、募集中です。環境は WinXP(SP2) + PHP5.2.4 + php_xdebug-2.0.0-5.2.2.dllで、普通にCLIとして叩く場面です。
追記。以前のローカル(PHP4.4.7)でどうなっていたのか比べてみました。結果。
PHP | xdebugをロード? | xdebug.default_enable は? | error_logに・・・ |
5.2.4 | Yes | on | × |
5.2.4 | Yes | off | ○ |
5.2.4 | No | - | ○ |
4.4.7 | Yes | on | × |
4.4.7 | Yes | off | × |
4.4.7 | No | - | ○ |
う〜〜ん・・・いっそ、CLIからUnitTest系を駆動する場合は display_errors = 1にしちゃった方が早いのかも知れない・・・。こっちは出力されるんですよ。ちゃんと。display_errors = 0 にして、error_log 出力にすると動かなくなる。
ちなみに、出力先は file にしています。