我花了半天时间尝试不同的东西,包括我在 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
访问我的网络应用程序(和其他 docker 网络应用程序)这一切都可以运行应用程序
在 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
中的 ip
但是我不能打断点,我什至添加了xdebug_break()
再检查一遍。
我也在运行最新的 docker beta Version 1.12.0-rc3-beta18 (build: 9996)
我非常感谢任何人的帮助,这对我来说是一个真正的障碍。
如果需要任何进一步的信息,我很乐意提供。
最佳答案
更新 2:
正如@Rashidul 所指出的,从 17.06 docker for Mac 开始,您可以将 xdebug.remote_host="192.168.65.1"
替换为 xdebug.remote_host="docker.for.mac。本地主机”
更新:正确的方法
所以我最终发现我在 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
关于php - 如何调试安装到在 docker beta for mac 上运行的容器的 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252963/