环境

  • docker 17.06+
  • php7.0 docker容器
  • chrome+JetBrains IDE Support扩展
  • IDE:phpstorm 2017.2

注意:如果你的docker版本低于17.06+,请先升级到17.06+版本,因为docker.for.XXX.localhost这个宿主机的虚拟域名是17.06添加进来的。

配置php.ini

如果是windowsxdebug.remote_host需要修改为docker.for.mac.localhost

[xdebug]
; 远程是否可以用,必须
xdebug.remote_enable = on
; 自动开始
xdebug.remote_autostart = on
; 远程的 host,默认本地;docker内使用虚拟域名:mac:docker.for.mac.localhost,windows:docker.for.win.localhost
xdebug.remote_host = docker.for.mac.localhost
; 使用非 9000 默认端口,9000 端口我失败了,所以最好改动一下
xdebug.remote_port = 9010
; 使用 dbgp 做 80 端口代理
xdebug.remote_handler = dbgp
; 这里的 的 key 必须和到时候 IDE 中的一致
xdebug.idekey = PHPSTORM
; 输出的日志文件,个人觉得很重要
xdebug.remote_log = /tmp/xdebug.log

配置phpstorm

  • Preferences->Languages & Frameworks->PHP->Debug

    指定Xdebug内的Debug port端口为你php.ini上面配置的端口9010

  • Preferences->Languages & Frameworks->PHP->Debug->DBGp Proxy

    IDE key:PHPSTORM

    Host:localhost

    Port:80

开启phpstorm 右上角的电话按钮,在代码文件上打断点,然后访问就会提示有脚本调试访问,选择同意就可以了。

注意:

PHP->Servers下的Absolute path on the serve需要设置为容器内的项目路径