Hatena::ブログ(Diary)

yk5656 diary

記事一覧: Linux | Ansible | Swift | Ruby | PHP | JavaScript | MySQL | Git | Vim

2016-03-20(日)

PhpStormでデバッグしてみる

CakePHP3をインストールしてみる
の続き

PhpStormでデバッグしてみる。


PhpStormの設定

前回作成したCakePHP3のsampleをPhpStormで開く。
f:id:yk5656:20160421004845p:image

[PhpStorm]-[Preferences]で設定画面を開き、
f:id:yk5656:20160421004844p:image

サーバーを追加する。 サーバー名/サーバーのIPアドレスを入力し、パスマッピングの設定をする。
f:id:yk5656:20160421004842p:image:w580

[Run]-[Edit Configurations]を開き、
f:id:yk5656:20160421004943p:image

リモートデバッグの設定を追加する。
「PHP Remote Debug」を追加して、先ほど追加したサーバーを指定し、 Ide keyに適当なIDを設定する。
f:id:yk5656:20160421004942p:image:w580


Xdebugの設定

Xdebugをインストールし、

$ sudo yum install php-xdebug

下記の行を追加する。

$ sudo vi /etc/php.d/xdebug.ini
・・・
xdebug.remote_enable=1
xdebug.remote_connect_back=1

再起動して反映。

$ sudo systemctl restart httpd


ブックマークレットの準備

下記のページに行って、

Xdebug & Zend Debugger bookmarklets generator for PhpStorm
https://www.jetbrains.com/phpstorm/marklets/

[GENERATE]ボタンを押して、
「Start debugger」「Stop debugger」をブックマークバー等に保存する。
f:id:yk5656:20160421005223p:image:w300


デバッグの実施

とりあえず、適当にブレークポイントを設定しておく。
f:id:yk5656:20160421005435p:image

[Run]-[Debug]を選択し、
f:id:yk5656:20160421005434p:image

今回追加したリモートデバッグを選択すると、
f:id:yk5656:20160421005433p:image

デバッガが起動する。
f:id:yk5656:20160421005432p:image

http://localhost:8080/sample/にアクセスし、「Start debugger」を押してデバッグを開始する。
f:id:yk5656:20160421005624p:image

リロードして、改めてアクセスすると、ブレークポイントで止まる。
f:id:yk5656:20160421005623p:image

ちなみに、「Start debugger」を押すと、Cookieに、「XDEBUG_SESSION」が保存され、
f:id:yk5656:20160421005622p:image:w400
「Stop debugger」を押すと削除される。


常にデバッグしたい場合

ブックマークレットで切り替えず、常にStart debuggerした状態にしたい場合、
xdebugの設定で、remote_autostartをONにして、idekeyを設定する。

$ sudo vi /etc/php.d/xdebug.ini
・・・
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
xdebug.idekey='PHPSTORM'

以上で、Star debuggerを押していなくても、デバッガが起動していれば ブレークポイントで止まる。
f:id:yk5656:20160421005828p:image:w550


CLIをデバッグしたい場合

remote_connect_backは$_SERVER['REMOTE_ADDR']でブラウザからのアクセス元のIPを取得しているみたいだが、 CLIの場合は取得できないので、ホストOSのIPアドレスを指定する必要がある。

下記のような感じで、xdebugの設定にホストOSのIPアドレスを指定すれば、 ブラウザからもCLIからでもデバッグできる。

$ sudo vi /etc/php.d/xdebug.ini
・・・
xdebug.remote_enable=1
xdebug.remote_host='10.0.2.2'
xdebug.remote_autostart=1
xdebug.idekey='PHPSTORM'

適当なPHPを作成して、

cd /vagrant/sample
vi test.php
<?php
$a = 'Hello';
$b = 'world!';
echo $a + ' ' + $b;

ブレークポイントを設定する。
f:id:yk5656:20160421005951p:image

実行すると

$ php test.php

ブレークポイントで止まる。
f:id:yk5656:20160421005950p:image

トラックバック - http://d.hatena.ne.jp/yk5656/20160320/1461167256