[PHP] PHPのビルトインサーバでxdebugを使う

2017年12月4日月曜日

PHP

※使用したPHPのバージョンは5.6.30

ビルトインサーバ

PHPは -S オプションをつけてコマンドを実行すると、ビルトインのwebサーバが起動する。
例えば、8080ポートでカレントディレクトリをwebrootとしたい場合は以下のようにする。

$ php -S localhost:8080 -t ./

もちろん、実際の運用ではApacheとかを使うんだけど、ちょっとしたことを試したいときはとても便利だ。

xdebugを使いたい

さて、そこでビルトインサーバを使っている時にもxdebugを使ったデバッグがしたくなってくる。
こういう場合はphp.iniでxdebugを有効にすればいいんだけど、php.iniをグローバルに変えてしまって、他のところにまで影響を与えたくない。

なので、php.iniをローカルにコピーして、-cオプションでphp.iniのパスを指定する。

$ php -S localhost:8080 -c ./php.ini -t ./

php.iniには以下の項目を追加しておく。
"/path/to/xdebug.so"のところは実際のxdebug.so(Windowsの場合はxdebug.dll)へのパスを記載する。

php.ini
[xdebug]
zend_extension="/path/to/xdebug.so"

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
https://xdebug.org/docs/all_settings