发布于2022-06-02 06:56 阅读(507) 评论(0) 点赞(25) 收藏(4)
访问测试环境的页面,在本地开发机打断点调试。相当流弊的功能,方便代码排查原因。
原理:
运行xdebug需要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会通过浏览器或者IDE的http请求,携带特定的参数发送到服务端,服务端收到请求后,发现这是一个xdebug请求,则与IDE建立dpgp连接,当遇到断点时候,返回调试信息给IDE
- 服务器的IP是10.0.1.2,端口80上有HTTP
- IDE位于未知IP上,因此xdebug.remote_connect_back设置为1
- IDE侦听端口9000,因此xdebug.remote_port设置为9000
- 发出HTTP请求,Xdebug从HTTP头中检测IP地址
- Xdebug连接到端口9000上检测到的IP(10.0.1.42)
- 调试运行,提供HTTP响应
调用流程:
以上内容摘自storyflow的博客,感谢原作者。
好的,搞清楚原理之后,把上面的Ip、端口号这些统统忘记,以免跟下面演示的IP、端口搞混。 (搞不清楚就算了,反正也要忘记 ^ _ ^ )
现在 我们正式开始一段愉快的学习之旅吧。
172.16.249.179
, 安装了php 5.6.0,安装目录在 /opt/remi/php56/root
,http://test.php.com
, 程序已部署到测试服,项目能正常访问。https://xdebug.org/download.php
https://xdebug.org/download/historical
xdebug-2.5.4.tgz
这个版本。xdebug-2.5.4.tgz
上传到服务器的/opt
目录下,解压并进入目录:tar-zxvf xdebug-2.5.4-tgz
cd /opt/xdebug-2.5.4
注意:执行此命令的时候,/phpize前面的路径得替换为你机器上的php真实安装路径。
/opt/remi/php56/root/bin/phpize
我在执行此命令后报错,原因是没有安装php-devel开发工具:
于是先安装php-dev工具:
#列出安装包的所有版本
yum list | grep php-devel
#找到对应版本的安装包,执行安装
yum install php56-php-devel.x86_64
操作过程如下图:
注意:执行此命令的时候,/phpize前面的路径得替换为你机器上的php真实安装路径。
/opt/remi/php56/root/bin/phpize
注意:执行此命令的时候,/php-config前面的路径得替换为你机器上的php真实安装路径。
./configure --enable-xdebug --with-php-config=/opt/remi/php56/root/bin/php-config
执行成功,再执行:
make && make install
注意:xdebug.remote_port端口号为9009,是指你本地开发机的监听端口号,当然也可以改为其他端口号。
zend_extension="xdebug.so"
xdebug.remote_enable=On
#本地开发机端口,测试服务器会讲debug信息发送到此端口
xdebug.remote_port=9009
xdebug.idekey=PHPSTORM
#如果开启此remote_connect_back,则忽略xdebug.remote_host的参数
xdebug.remote_connect_back = 1
xdebug.remote_handler = dbgp
xdebug.auto_trace = 1
xdebug.remote_log = /tmp/xdebug.log
因为debug session通讯数据是从linux服务器发送到你本地开发机,所以需要配置ssh转发通道(ssh tunnel)
ssh工具我用的是MobaXterm软件,转发通道配置如下图,你也可以使用CRT, xshell等其他工具,原理是相同的。
sshCRT配置大概是这样的:
telnet 127.0.0.1 9009
检查是否能够访问9009 端口。firewall-cmd --state
,记得开放此端口。https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
安装后你可能需要重启浏览器,此插件才能正常运行。
虫子为绿色即为运行中:
此插件的作用是在cookie中设值:
在登录方法打断点,浏览器访问http://test.php.com
,可以进入断点:
如果只是通过postman方式调用接口,则需要在postman的cookie中,先添加域名:
然后在对应域名下添加cookie: XDEBUG_SESSION=PHPSTORM;
主要参考资料:
https://segmentfault.com/a/1190000016366104
https://juejin.cn/post/6844903728193994766
https://www.cnblogs.com/ding-daisy/p/10142023.html
作者:你看我迷人不
链接:http://www.phpheidong.com/blog/article/337629/4f5ad6e57c4993c27f0e/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!