【PHP】 踩扁各种坑phpstorm方能XDEBUG

PHPStorm使用Xdebug断点调试,从下班弄到深夜,期间踩遍了各种深的浅的,方的圆的各种坑,可算是搞定了。

这里写个笔记,提醒自己,也顺便当个指路明灯。


开发环境 Win10 + PHPStorm

运行环境 VMware + CentOS7


xdebug下载 https://xdebug.org/


安装和通常的php扩展一样,不清楚的参考README

在安装后再php.ini中添加以下配置项

[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
;xdebug.remote_connect_back = 1
xdebug.remote_handle="dbgp"
xdebug.remote_mode="req"
xdebug.remote_host=192.168.0.102
xdebug.remote_port=6053
xdebug.auto_trace=1
xdebug.collect_includes = 1
xdebug.collect_params = 1
;xdebug.collect_return = 1
xdebug.remote_autostart = 1
xdebug.idekey="PHPSTORM"
xdebug.remote_log = /tmp/xdebug.log

PHPStorm配置很多文章都有描述,这里不再记录,参考链接

https://paper.seebug.org/308/

需要注意的是,这里我使用的端口号是自己定义的6053,当然这里你也可以自己随便写,只要是未被占用就行。

在Run->Edit Configurations添加PHP Web Application,配置好之后,打好断点,点击右上角的小电话,然后运行debug

【PHP】 踩扁各种坑phpstorm方能XDEBUG_第1张图片


phpstorm提示如下



waiting for incomming connection with ide key

这是什么鬼,怎么waiting一串数字了,不是说好的PHPSTORM吗,而且还等不到

然后各种Google百度搜啊,有说是xdebug版本不对的,有说没有装浏览器扩展插件的

又下了一个低版本的xdebug,重新编译安装,又下载了个Chrome插件Xdebug helper

照着他们说的挨个操作,尼玛竟然没有一毛钱的变化!!垃圾网文,毁我青春!!

后来在Run->Edit Configurations中发现了PHP Remote Debug选项,这里有这么一个选项

【PHP】 踩扁各种坑phpstorm方能XDEBUG_第2张图片

卧槽,这尼玛仿佛发现了新大陆。应该就是他了!!恍然大悟,劳资在Setting里添的PHPSTORM不生效,应该是添错地了,垃圾网文都是骗人的。


配置好运行后,发现。。。卧槽,怎么不打开浏览器了?!!你是屎了么??难道要我自己手动输入PHPSTORM?

庆幸的是控制台提示变成了这样


竟然提示PHPStorm了,不再是那一串傻逼数字,六六六,喜大普奔啊

在地址栏输入参数?XDEBUG_SESSION_START=PHPSTORM,咦?竟然还是没有一毛钱的变化

什么鬼啊 摔!

难道是这个代码太复杂了,解析不了?那就写个简单的phpinfo()总可以吧。

战战兢兢改了代码,在唯一的一行代码前打了个断点。。。。尼玛!给点反应啊,哪怕报个错也好啊,人屎了还会叫一声,你特么一点反应都没有搞毛啊!!!


百无聊赖,研究了下这个xdebug的原理,大概意思就是我这里通过指定的get参数表示一个debug请求,然后服务端发现了这个参数后根据php.ini配置对这个debug做出响应。


知道原理就好办了,结合php.ini配置中的remote_host和remote_port应该就是本地会起一个端口,用于监听服务端对于debug请求的回调通道。

那要么是这个监听没有开启,要么就是服务端回调没有过来。phpstorm关闭,右键使用管理员权限运行,依然没卵用。


网上找资料的时候突然发现有个选项,别人有,我没有。xdebug.remote_log

尼玛,恨不得徒手开砸榴莲,这特么不是可以看log吗,为毛不设置!!


添加配置项,重启Nginx,在log文件中发现了这个

I: Connecting to configured address/port: 192.168.0.102:6053.
E: Time-out connecting to client. :-(

time-out,顾名思义,响应太慢,服务器嫌弃他,放弃了

可是我这是自家虚拟机啊,武松和大朗都不分你我的,这虚机隔个网卡就十万八千里了?


不对,不会这么慢

是不是win10防火墙给拦住了。战战兢兢的打开防火墙设置,火墙火墙火墙人家都是躲的,第一次对防火墙这么有期待。

卧槽!!果然是开着的!!!就你了!!!

代表长者消灭你!!!


关闭火墙

【PHP】 踩扁各种坑phpstorm方能XDEBUG_第3张图片


重新打开phpstorm的小虫子电话,运行debug

【PHP】 踩扁各种坑phpstorm方能XDEBUG_第4张图片

快 快扶我起来!!

这是何等尼玛卧槽!!!

话说,大家用Windows平时都不开防火墙裸奔的吗?!!


这个故事告诉我们,看日志啊!!!代码要写日志看日志!!!



你可能感兴趣的:(PHP)