前回できたと思ったのですが、残念ながら寝て起きたら動かなくなってました。 再度調べてリモートデバッグ機能を復活させたいと思います。
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を下記のように設定して、サーバ情報を追加します。
5.Run > Edit Configurationsをクリックして、Defaults > PHP Remote Debugに進み、そこでServerを選択し、id keyを入力します。これは先程php.iniに設定したxdebug.idekeyと同じです。
6.下記サイトで、idekeyを入れてgenerateしたjavascriptでブックマークレットをつくる。generateすると下にリンクがでてくるので、そのリンク先に指定されているjavascriptをブックマークに保存します。Start debuggerがデバッグ開始する際のブックマークレットで、Stop debuggerがデバッグを停止する際のブックマークレットです。
http://www.jetbrains.com/phpstorm/marklets/