这两天心血来潮想在本地配置一个xdebug方便调试PHP代码,但是按照网上的教程折腾完,最终通信没有成功,暂时还未找到不成功的原因,因为还有别的事情要做所以暂时先将此放弃,回头得空在研究,现将操作步骤记录如下:
工具-版本
PhpStorm版本:8.0.3 破解版
PHP版本:PHP Version 5.6.11
配置PHP使支持xdebug
前往xdebug的官方网站下载PHP的xdebug扩展:https://xdebug.org/download.php
值得注意的是您需要下载和您电脑上PHP版本相关联的扩展。根据自己的版本我下载的是 php_xdebug-2.5.1-5.6-vc11-nts-x86_64.dll
将下载下来的扩展,复制到PHP安装目录的 ext 文件夹下,然后打开php.ini文件,在最后一行添加,根据自己需要选择配置。
[Xdebug]
;指定Xdebug扩展文件的绝对路径
zend_extension=”E:/nginx-php/php-5.6.11-x64/ext/php_xdebug-2.5.1-5.6-vc11-nts-x86_64.dll”
;启用性能检测分析
xdebug.profiler_enable = 1
;启用代码自动跟踪
xdebug.auto_trace=1
;允许收集传递给函数的参数变量
xdebug.collect_params=1
;允许收集函数调用的返回值
xdebug.collect_return=1
;指定堆栈跟踪文件的存放目录
xdebug.trace_output_dir=”E:/apiweb/xdebug”
;指定性能分析文件的存放目录
xdebug.profiler_output_dir=”E:/apiweb/xdebug”
;xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_name = “cache.out.%t-%s”
;这里是调试器的关键字 在Chrome以及FireFox中插件配置的时候要用到
xdebug.idekey=”PHPSTORM”
;是否允许远程终端 这里标示开启
;xdebug.remote_enable = 1
;这里表示服务器的监听端口。注意此项需要编辑器的端口保持一致
xdebug.remote_port=9003
;这里必须设置为0,为了能使用浏览器插件 xdebug helper配合调试
xdebug.remote_autostart = 0
xdebug.profiler_append = 0
xdebug.profiler_enable_trigger = 0
xdebug.remote_handler = “dbgp”
xdebug.remote_host = 127.0.0.1
添加完之后,重启PHP,用phpinfo查看出现xdebug,表示安装成功。
PhpStorm配置
接下来需要将PHP和编辑器通信。
一、打开PhpStorm的设置选项 file->settings
四、配置debug,只需要更改 debug port的端口号,其余的保存默认即可(注意:此端口号需要和php.ini中配置的一致)
五、配置DBGp Proxy选项(注:IDE KEY需要和php.ini配置的xdebug.idekey=”PHPSTORM” 保持一致,端口和xdebug.remote_port=9003保持一致)
至此配置的主要项已经完成,接下来的配置也是我最由于的地方,暂时还没搞懂为啥要这么配置,但是网上教程好多都会这么配置,因此一并记录如下;
保存后,选择自己创建的那个主体。
火狐浏览器设置
在火狐浏览器的插件中心下载 theeasiestxdebug
在IDE KEY下填写(注意和php.ini配置的xdebug.idekey=”PHPSTORM”保持一致)
(提醒若是用的谷歌浏览器请用:xdebug helper 设置方法和theeasiestxdebug类似)
调试
1、浏览器下输入要调试的页面,点击又上角的爬虫。
2、PhpStorm开启监听
3、打断点
4、浏览器刷新,见证奇迹的时刻,您的编辑器正常会有反应,会看到下方的控制台有信息输出,如图(下图为正确显示图)。但我照此步骤配置完,编辑器什么反应都没有,多方查找也未曾找到原因,在此先留下记录吧,日后在找找原因。
问题解决
通过同事的帮忙问题已经解决了,真是一个小问题难道英雄汉啊,主要原因在于php.ini的配置
(此方法必须开启,必须开启才能和本地通信,这是最主要的,之后就看debug的错误提示,将映射关系去掉,由于同事操作太快了,这部分没截图记录下来,过后在找没找到,大家只能根据错误提示来啦!)
;是否允许远程终端 这里标示开启
xdebug.remote_enable = 1
2、若是用的vagrant,远程配置xdebug一定要注意一个地方
xdebug.remote_host = 127.0.0.1 #配置远程的host,这个xdebug.remote_host 的ip要填你的phpstorm,也就是你的windows所在的ip。
3、zend_extension 的扩展目录为make install后的目录。
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
贡献一个配置:
[xdebug] zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so xdebug.remote_host = 10.20.0.110 xdebug.remote_enable = 1 xdebug.remote_port = 9003 xdebug.remote_handler = dbgp xdebug.remote_mode = req xdebug.trace_output_dir="/usr/local/php/xdebug" xdebug.profiler_output_dir="/usr/local/php/xdebug" xdebug.idekey="www" xdebug.remote_autostart = 0 xdebug.collect_return=1 xdebug.collect_params=1 xdebug.auto_trace=1 xdebug.profiler_enable = 1
参数意思请自行查找。