PHP & Laravel Gold Tech Log

PHP & Laravel を中心にしたWeb関連開発技術の紹介

PHP IntelliJ IDEA & Xdebug でローカルデバッグ(ビルトインサーバ)

      2016/04/16

IntelliJ(PHPStorm) IDEAを使ったPHPデバックの方法です。1台の開発環境内でWebサーバ(ビルトインサーバ)を立ち上げてIDEでローカルでデバックします。リモートデバックもIntelliJ(PHPStorm) IDEA側の設定は同じです。WebサーバはPHP本体のビルトインサーバを使った方法でのデバックを紹介します。

PHP Xdebugのインストール

PHPのバージョンは合わせてインストールしてください。Xdebugが入っていない環境では、当然ですがIDE上でもデバッカーが起動してくれません。IDE上でデバッカーが起動しない場合は、Xdebugがインストールされていないか、Xdebugのポート番号が違っていないか確認してみてください。間違っていなければ、ブラウザ・アクセスによりデバッカーが自動的に起動します。インストールは Mac OSの場合、Homebrew でインストールできます。

$ brew install php56-xdebug

PHPにXdebugがインストールされているかの確認方法

$ php -v
PHP 5.6.20 (cli) (built: Mar 31 2016 17:14:52)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans

PHPビルトインサーバをローカルで立ち上げる

ローカルの開発環境でApacheやNginxを立ち上げるのは面倒ですよね。そこでPHPのビルトインサーバを利用してWebサーバーを立ち上げる方法を紹介します。すごく簡単に立ち上げられてデバックをするための設定もできます。

$ php -S localhost:8000 -t /Users/isao/Dev/app1/web -d xdebug.remotenable=1 -d xdebug.remote_autostart=1 -d xdebug.remote_port=9000 -d xdebug.remote_host=localhost

Webサーバーのポート:8000
rootドキュメント:/Users/isao/Dev/app1/web
xdebug.remotenable(1):リモートデバックを可能にします
xdebug.remote_autostart(1): 常にリモートデバックセッションが張られます
Xdebugの対象ポート:9000
Xdebugの対象サーバ:localhost

IntelliJ IDEのPHPリモートデバックの設定

次は、IDE側でデバックをするための設定をします。次の順番で設定していきます。

1)Xdebugのポート番号の設定
2)Xdebugを実行するサーバの設定
3)PHPリモートデバッグの設定

Xdebugのポート番号の設定

ここでは、9000 番ポートを設定する
Prefarence > Languages & Framewokrs > PHP > Debug > Xdebug > Debug Port: 9000

Preferences3

デバックをするWebサーバの設定

ここでは、サーバは、localhost でポート番号を 8000 番に設定する
Prefarence > Languages & Framewokrs > PHP > Servers >「+」で追加を選択 > Hostの設定

Preferences2

PHP Remote Debugの設定

Run > Edit Configurations > PHP Remote Debug > 「+」で追加を選択 > Name 等の設定、Serversは上の設定から選ぶ

Run_Debug_Configurations3

IntelliJ IDEでデバック

右上の受話器マークをクリックするか、もしくは、Run => Start Listening for PHP Debug Connections を押してデバック開始を待つ。その後、ブラウザからアクセスするとデバッカーが自動起動されます。あらかじめ、ブレークポイントを設定しておくと、そこでストップして変数等がダンプされて見られるようになります。

Response_php_-_app1_-____Dev_app1_

ブラウザからアクセス

ブラウザからhttp://localhost:8000 でデバックしたいURLにアクセスする。

まとめ

IDEでブレークポイントを設けて、変数をダンプして見られるのでともて便利ですね。IDEだと楽にデバックすることができます。

念のため、Xdebug を利用するときの php.ini です。php.iniは Mac OSで Homebrewでインストールした場合、/usr/local/etc/php/5.6/ あたりにあります。

■php.ini
/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini
xdebug.default_enable = 1
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9090
; xdebug.remote_host=localhost
xdebug.max_nesting_level=1000
xdebug.remote_connect_back=1
xdebug.idekey = "PHPSTORM"

 - PHP