失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php项目使用xdebug远程调试

php项目使用xdebug远程调试

时间:2023-09-09 09:20:54

相关推荐

php项目使用xdebug远程调试

0. 目的、原理和调用流程

访问测试环境的页面,在本地开发机打断点调试。相当流弊的功能,方便代码排查原因。

原理:

运行xdebug需要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会通过浏览器或者IDE的http请求,携带特定的参数发送到服务端,服务端收到请求后,发现这是一个xdebug请求,则与IDE建立dpgp连接,当遇到断点时候,返回调试信息给IDE

服务器的IP是10.0.1.2,端口80上有HTTPIDE位于未知IP上,因此xdebug.remote_connect_back设置为1IDE侦听端口9000,因此xdebug.remote_port设置为9000发出HTTP请求,Xdebug从HTTP头中检测IP地址Xdebug连接到端口9000上检测到的IP(10.0.1.42)调试运行,提供HTTP响应

调用流程:

以上内容摘自storyflow的博客,感谢原作者。

好的,搞清楚原理之后,把上面的Ip、端口号这些统统忘记,以免跟下面演示的IP、端口搞混。 (搞不清楚就算了,反正也要忘记 ^ _ ^ )

现在 我们正式开始一段愉快的学习之旅吧。

1.机器环境:

本地开发机windows,只安装了phpstorm。

注意,我本地开发机并没有安装php.exe等其他任何开发工具。测试服务器linux, IP为172.16.249.179, 安装了php 5.6.0,安装目录在/opt/remi/php56/root

服务器也安装了php-fpm/nginx等所有开发依赖环境。此处假设访问域名为, 程序已部署到测试服,项目能正常访问。

2.Linux服务器安装xdebug扩展

2.1.下载对应版本的xdebug扩展包

最新版本下载地址:/download.php历史版本下载地址:/download/historical

我下载的是xdebug-2.5.4.tgz这个版本。

2.2.xdebug-2.5.4.tgz上传到服务器的/opt目录下,解压并进入目录:

tar-zxvf xdebug-2.5.4-tgzcd /opt/xdebug-2.5.4

2.3.执行php安装扩展包的命令

注意:执行此命令的时候,/phpize前面的路径得替换为你机器上的php真实安装路径。

/opt/remi/php56/root/bin/phpize

我在执行此命令后报错,原因是没有安装php-devel开发工具:

于是先安装php-dev工具:

#列出安装包的所有版本yum list | grep php-devel#找到对应版本的安装包,执行安装yum install php56-php-devel.x86_64

操作过程如下图:

2.4.重新执行命令

注意:执行此命令的时候,/phpize前面的路径得替换为你机器上的php真实安装路径。

/opt/remi/php56/root/bin/phpize

2.5. 编译xdebug扩展包

注意:执行此命令的时候,/php-config前面的路径得替换为你机器上的php真实安装路径。

./configure --enable-xdebug --with-php-config=/opt/remi/php56/root/bin/php-config

执行成功,再执行:

make && make install

2.6. 安装成功后,去php modules路径下看看,是否有xdebug.so文件:

3. Linux服务器配置php.ini

3.1. 在php.ini文件中追加参数:

注意:xdebug.remote_port端口号为9009,是指你本地开发机的监听端口号,当然也可以改为其他端口号。

zend_extension="xdebug.so"xdebug.remote_enable=On#本地开发机端口,测试服务器会讲debug信息发送到此端口xdebug.remote_port=9009xdebug.idekey=PHPSTORM#如果开启此remote_connect_back,则忽略xdebug.remote_host的参数xdebug.remote_connect_back = 1xdebug.remote_handler = dbgpxdebug.auto_trace = 1xdebug.remote_log = /tmp/xdebug.log

3.2. 配置转发端口9009

因为debug session通讯数据是从linux服务器发送到你本地开发机,所以需要配置ssh转发通道(ssh tunnel)

ssh工具我用的是MobaXterm软件,转发通道配置如下图,你也可以使用CRT, xshell等其他工具,原理是相同的。

sshCRT配置大概是这样的:

远程主机上键入telnet命令telnet 127.0.0.1 9009检查是否能够访问9009 端口。如果有端口冲突可以调整。如果启动了防火墙firewall-cmd --state,记得开放此端口。

4.本地开发机phpStorm配置

4.1. phpStorm debug配置端口

4.2. dbgp proxy配置

4.3. servers配置映射路径path mappings

4.4. 开启、关闭监听

5. chrome浏览器安装xdebug-helper插件

5.1. 扩展包下载

/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

5.2. 启动xdebug

安装后你可能需要重启浏览器,此插件才能正常运行。

虫子为绿色即为运行中:

此插件的作用是在cookie中设值:

6. 打断点调试

在登录方法打断点,浏览器访问,可以进入断点:

6.postman设置cookie方式

如果只是通过postman方式调用接口,则需要在postman的cookie中,先添加域名:

然后在对应域名下添加cookie:XDEBUG_SESSION=PHPSTORM;

主要参考资料:

/a/1190000016366104

/post/6844903728193994766

/ding-daisy/p/1014.html

如果觉得《php项目使用xdebug远程调试》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。