PHPが開発されてから早10年近く経つわけだが、
未だに標準添付されていない機能がある。
それは
デバッガー
せいぜいコマンドラインで構文チェックができるぐらいだ。
Fatalエラーが発生したら、
ソースコードを追いかける以外に方法がない。
そこでビルトイン型のデバッガをつけるのだが、
そのひとつがPECL::Xdebug
例によってインストールはコマンド一発
# pecl install Xdebug
あとはphp.iniに書く。
zend_extensionを使うのでファイル名のみではなくフルパスで記述
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so
例えば重複したClass名を定義してしまってFatalエラーがで出た場合
通常は
Xdebugをロードしておくとこうなる
Fatal error: Cannot redeclare class sgl_request in /home/test/lib/SGL/Request.php on line 49 | ||
---|---|---|
Call Stack | ||
# | Function | Location |
1 | require_once('/home/test/lib/SGL/Task/DetectEnv.php') | /home/test/www/setup.php:150 |
2 | require_once('/home/test/lib/SGL/Request.php') | /home/test/lib/SGL/Task/DetectEnv.php:47 |
なぜエラーが発生したのか一目瞭然。
さらに引数なども具体的な値が表示されるので、
バグの発見がしやすくなる。
言うまでもないのだが、
本番環境には適用しないこと。
みるみるうちにロードが上昇しますので。