edo1z blog

プログラミングなどに関するブログです

phpstorm vagrantの仮想マシンをXdebugでデバッグする

前回できたと思ったのですが、残念ながら寝て起きたら動かなくなってました。 再度調べてリモートデバッグ機能を復活させたいと思います。

vagrant仮想マシンの環境は下記になります。

  • CentOS6.5
  • Apache/2.2.15 (Unix)
  • PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)

順番を整理します。

1.vagrantにlocalhost:8080で接続できるようにしておきます。

Vagrantfileに、下記を追記します。実際はコメントアウトされているのでそれを解除します。自分のVagrantfileでは22行目。

config.vm.network :forwarded_port, guest: 80, host: 8080

2.Xdebugをインストールします。

$ sudo yum --enablerepo=epel install php-pecl-xdebug

3.php.iniの設定をします。

まずxdebug.soの位置を確認しておきます。

$ sudo -i
$ find / -name xdebug.so
/usr/lib64/php/modules/xdebug.so

次に、vimなどでphp.iniを開いて編集します。

$ vim /etc/php.ini

php.iniに下記を追記します。

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.default_enable = 1
xdebug.idekey = "sns"
xdebug.remote_enable = 1
xdebug.remote_port=9000
xdebug.remote_host=10.0.2.2

xdebug.idekeyは、xdebugがデバッグのときに使用する、セッションの識別子になりますので、任意の値を設定します。今回SNSサイトを作成する必要があるので、snsとしております。

また、remote_hostを設定しないと、デバッグが動きません。$_SERVER['REMOTE_ADDR']をみると私の場合、10.0.2.2になっております。どうもVirtualboxの標準値のようです。

また、remote_portを9000以外にする場合は、phpstormの設定で、Prefereces > PHP > Debugで、Xdebugのdebug portを変更する必要があります。

あと、xdebugをインストールしたら、私の場合、/etc/php.d/xdebug.iniというものが作成されておりまして、そこでもzend_extensionの設定がされていました。設定が重複すると、エラーがでますので、xdebug.iniの記載を削除するか、上記のxdebugの設定をxdebug.iniに記載するなど対処する必要があります。

追記したらhttpdを再起動しておきます。

service httpd restart

4.phpstormのpreferenses > PHP > serversを下記のように設定して、サーバ情報を追加します。

スクリーンショット 2014-03-03 5.09.26

5.Run > Edit Configurationsをクリックして、Defaults > PHP Remote Debugに進み、そこでServerを選択し、id keyを入力します。これは先程php.iniに設定したxdebug.idekeyと同じです。

スクリーンショット 2014-03-03 5.11.14

6.下記サイトで、idekeyを入れてgenerateしたjavascriptでブックマークレットをつくる。generateすると下にリンクがでてくるので、そのリンク先に指定されているjavascriptをブックマークに保存します。Start debuggerがデバッグ開始する際のブックマークレットで、Stop debuggerがデバッグを停止する際のブックマークレットです。

http://www.jetbrains.com/phpstorm/marklets/ スクリーンショット 2014-03-03 7.46.16

7.phpstormの赤い電話みたいなマークをクリックして青くします。

スクリーンショット 2014-03-03 7.49.45