我怎样才能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