phpStorm remote debug with xdebug

因为使用了 docker 进行了环境隔离,所以需要对 phpStorm 进行远程调试的配置。

网上有一些教程,不是太复杂就是已经过时。经过摸索,一下是完整的配置流程。

版本: ubuntu 14.04 LTS, phpStorm 9, php5-fpm

首先是服务器端的设置:

  1. 安装xdebug

    1
    apt-get install php5-xdebug
  2. 配置 xdebug

    1
    vim /etc/php5/fpm/conf.d/20-xdebug.ini

加入:

1
2
3
4
5
zend_extension=xdebug.so
xdebug.remote_mode="req"
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_connect_back=1

上面的设置也可以直接放在 php.ini 中。

接下来进行客户端的设置:

  1. 点击phpStorm菜单Run -> Start Listening for PHP Debug Connections
  2. 设置断点
  3. 安装 xdebug-helper Chrome 浏览器插件
  4. 打开要调试的网页,激活地址栏的 xdebug-helper
  5. 如果一切都设置正确,在 phpStorm 会弹出对话框进行文件映射等设置。

这样就可以了。

PS:
如果在 phpStorm 中创建 Remote debug 配置,也是可以收到 debug 断点的。

如果是apache2,xdebug 的默认配置文件会出现在 /etc/php5modes-available/xdebug.ini

UPDATE
如果web 服务器是在Docker for Mac下使用的话,xdebug.remote_connect_back=1会不起作用,因为这里的 docker container 接受到的 ip 都是来自172.17.0.1,所以需要显式的指定 ip 和端口:

1
2
3
4
5
6
7
zend_extension=xdebug.so
xdebug.remote_mode="req"
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_host="192.168.1.22"
xdebug.remote_port=9000
xdebug.remote_connect_back=0

这里的嗯Docker for Mac的版本是 v1.12,之后是否会修复这个问题,不得而知。
————2016.08.21