docker环境下,使用phpstorm进行debug

在上一篇文章中,阐述了在phpstorm安装xdebug。实际的开发过程中,由于历史项目的存在,不同框架的存在,我们需要借助docker来快速的实现开发环境的部署与统一,本文将阐述如何在docker下实现项目的xdebug。
理论概述
与在本机直接开发不同,docker环境下,大体是这样。

宿主机,即我们开发用的电脑。
我们看到,有以下几点不同:
PHP环境不同
本机开发时。项目的运行环境与IDEA上的CLI,都是本机环境,相统一。docker开发时,本机环境与dokcer环境可能不统一。
项目的路径不同
本机开发时,xdebug反馈的项目路径,就是开发机的实际路径。docker环境下,xdebug将docker主机的路径发送给宿主机,但宿主机接收到,在本机上的此路径上,找不到对应的文件。当然,也就没有办法进行正确的信息显示。
远程地址不同
本机开发时,远程主机地址就是本机地址,所以是127.0.0.1。docker开发时,远程主机地址,应该是宿主机地址。
实施
总结出上面的几点不同后,开始实施也变得简单了。
统一PHPSTORM与docker的PHP环境
配置 -> Languages .. -> PHPCLI Interpreter … -> + -> From Docker Vagrant

如果不清楚PHP的路径的话,进行DOCKER容器,使用whereis php。如果在service找不到docker,需要进入配置 -> docker -> + -> 确定,则phpstorm会自动为我们找到当前存在的容器。
映射路径
配置 -> Languages .. -> PHP -> SERVICES -> +

前面提本地项目路径,后面对应docker项目路径。
注意:为了保持统一,在docker容器配置时,应该使用volumes来进行磁盘映射。
修改远程地址
修改docker容器中的,php.ini中的xdebug.remote_host=host.docker.internal

host.docker.internal代表:宿主机
添加项目配置信息

总结
弄懂原理,善于看日志才是解决问题的捷径。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理