我花了半天时间尝试不同的事情,包括我在gist.github.com
上遇到的这个解决方案我有一个docker-compose文件,它安装了一个包含我的客户端和服务器项目的文件夹:
volumes:
- ~/projectx:/projectx
我的docker php.ini包含以下xdebug选项
[xdebug]
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.var_display_max_children = 999
xdebug.var_display_max_data = 999
xdebug.var_display_max_depth = 100
我安装了xdebug chrome extension
在我的mac主机文件中,我有以下127.0.0.1 localhost dtest.xxx.com
,因此我可以通过dtest.xxx.com
访问我的网络应用程序(和其他泊坞网络应用程序),这些应用程序都可以运行应用程序
在Phpstorm中(版本2016.1.2)在偏好->
语言&框架->
PHP ->
我拥有的服务器:
host = dtest.xxx.com,port = 80,Debugger = Xdebug
使用路径映射检查我已经
文件/目录设置为/Users/<myname>/projectx/server
服务器上的绝对路径设置为/projectx/server
我尝试将xdebug.remote_host
设置为从ifconfig获取的macs ip以及在/Users/<myname>/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/slirp/host
但是我不能打破一个断点,我甚至添加了xdebug_break()
双重检查。
我还在运行最新的docker beta Version 1.12.0-rc3-beta18 (build: 9996)
我非常感谢任何人的帮助,对我来说这是一个真正的阻碍。
如果需要任何进一步的信息,我很乐意提供。
答案 0 :(得分:12)
正如@Rashidul所指出的,自17.06版自适用于Mac的docker以来,您可以将xdebug.remote_host="192.168.65.1"
替换为xdebug.remote_host="docker.for.mac.localhost"
所以我最终发现我在docker中的xdebug设置应该是
xdebug.enable=1
xdebug.remote_enable = 1
xdebug.idekey="PHPSTORM"
xdebug.remote_port=9000
xdebug.remote_host="192.168.65.1"
xdebug.remote_connect_back=0
其中192.168.65.1
是在 中找到的条目~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/slirp/host
在最近的更新中,以上不再存在,为了获得Docker主机IP我知道使用下面的.profile
export DOCKER_HOST_IP=$(ipconfig getifaddr en0)
另外,请确保在Chrome扩展程序中正确设置idekey,在我的情况下PHPSTORM
有了这个我不再需要ssh隧道
我使用的解决方法是使用命令打开运行php的docker容器的ssh隧道,在我的例子中,我将docker容器ssh端口映射到12,因此-p 12
ssh -R 9000:localhost:9000 root@dtest.xxx.com -p:12