我怎样才能debugging的PHP安装到运行在Dockertesting版的Mac上的容器
我花了半天的时间尝试不同的东西,包括我在gist.github.com上遇到的这个解决scheme
我有一个docker-compose文件,它装载了一个包含我的客户端和服务器项目的文件夹:
volumes: - ~/projectx:/projectx
我的dockerphp.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 铬扩展
在我的Mac主机文件中,我有以下127.0.0.1 localhost dtest.xxx.com
所以我可以通过dtest.xxx.com
访问我的web应用程序(和其他dockernetworking应用程序),所有这些都可以运行应用程序
在Phpstorm(版本2016.1.2)在首选项->
语言和框架->
PHP ->
服务器我有:
host = dtest.xxx.com,port = 80,Debugger = Xdebug
检查使用path映射,我有
文件/目录设置为/Users/<myname>/projectx/server
服务器上的绝对path设置为/projectx/server
我已经尝试将xdebug.remote_host
设置为从ifconfig获取的我的IP地址,以及在/Users/<myname>/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/slirp/host
尝试IP /Users/<myname>/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/slirp/host
但是我不能xdebug_break()
点,我甚至添加了xdebug_break()
双重检查。 我也在运行最新的Version 1.12.0-rc3-beta18 (build: 9996)
testingVersion 1.12.0-rc3-beta18 (build: 9996)
我非常感谢任何人的帮助,这对我来说是一个真正的障碍。
如果需要更多信息,我很乐意提供。
更新2:
正如@Rashidul指出的那样,自17.06年的Docker for Mac以来,您可以用xdebug.remote_host="docker.for.mac.localhost"
replacexdebug.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隧道
原始解决scheme
我使用的解决方法是打开一个SSH隧道到运行PHP的docker容器使用一个命令,就像我在我的情况下,我有docker容器的SSH端口映射到12因此-p 12
ssh -R 9000:localhost:9000 root@dtest.xxx.com -p:12