ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

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 にしています。