PHPStorm配置xdebug调试php代码
V20160907
理由:
当项目越来越复杂,排错就越发困难。
你以为代码是这么运行的,但就是有未想到的功能导致流程变得不可捉摸。
此时我们需要调试,调试……
附注:PhpStorm 内建了 Zend Debugger 和 Xdebug 支持
步骤(windows):
- (服务端)安装配置xdebug
- 下载适合当前PHP版本的dll文件,
官方下载地址:<u>http://xdebug.org/download.php</u>;
- 下载适合当前PHP版本的dll文件,
- 将下载的dll文件放入php安装目录下的扩展文件夹(通常为ext文件夹)中;
- 设置 php.ini 配置文件,配置xdebug
xdebug详细配置参看官方配置文档
设置内容如下:
; XDEBUG Extension
[xdebug]
; 扩展文件路径
zend_extension = “E:/wamp/bin/php/php5.3.10/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll”
;zend_extension_ts = “d:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.dll”
;任意IDEKey,这里设定为PHPSTORM
xdebug.idekey = “PHPSTORM”
;xdebug.collect_return = On
; 追踪
;xdebug.auto_trace = On
;xdebug.trace_output_dir = “d:/wamp/php/debuginfo”
; 效能评测器
;xdebug.profiler_enable = on
;xdebug.profiler_output_dir = “d:/wamp/php/debuginfo”
;xdebug.profiler_enable_trigger = on
;xdebug.profiler_output_dir = “E:/wamp/tmp”
;xdebug.profiler_output_name = cachegrind.out.%t.%p
; 远程调试
xdebug.remote_enable = On ; 启用远程调试
xdebug.remote_mode = “req”
; 远程主机的IP地址或域名
xdebug.remote_host = “localhost” ; 远程服务器
xdebug.remote_port = 9001 ; 远程服务器端口
xdebug.remote_handler = “dbgp” ;
;xdebug.remote_autostart = 1 ;
; xdebug 的日志文件
xdebug.remote_log = “/var/log/xdebug/xdebug.log” /**END**********************************************************/
重要:确保php.ini文件的有效性,如果使用一键安装包,可能有多个php.ini文件,设置错误可能报“****waiting for incoming connection with ide key '*****'****”错误,笔者为这个问题曾排错一晚上,复制以上代码注意引号问题
- 重启Apache服务器(修改php.ini文件后均需重启服务器让配置文件生效);
- (客户端)安装、配置PHPStorm(这里的配置以PHPStorm 8.0.2为准)
安装PHPStorm(略);
配置xdebug
I 打开配置位置:file -> settings -> Languages & Frameworks -> PHP -> Debug
配置参数:一般配置xdebug 的调试端口(debug port), 设置为php.ini中设置好的远程调试端口即可,默认
端口任意:默认9000,勾选几个附属选项;
[图片上传失败...(image-588f69-1607395368150)]
II 打开配置位置:file -> settings -> Languages & Frameworks -> PHP -> Debug
-> DBGp Proxy
IDE Key 设置为php.ini中xdebug配置项的xdebug.idekey的值,Host设置为要调试的主机域名,Port端口,与php.ini中的端口保持一致;
[图片上传失败...(image-1a8b7a-1607395368150)]
3) 添加调试服务器(如已添加可省略此步骤)
打开配置位置:file -> settings -> Languages & Frameworks -> PHP -> Servers
配置参数:配置主机名(执行项目的主机名)、端口、调试软件,其中主机名按实际情况设置,调试软件选择xdebug;
备注:如果Servers选项未能显示,请导入一个项目。
[图片上传失败...(image-857190-1607395368150)]
4) 配置调试程序(php)
打开运行配置:Run -> Edit configurations… -> +(添加) -> PHP Web Application
设置服务器为刚添加的服务器,并设置开始的url(Start URL:即你要调试的php页面,可在url后边加上参数,如:user.php?act=login)和浏览器即可
PHPSTORM官方配置说明:
<u>http://blog.jetbrains.com/webide/2011/03/configure-php-debugging-in-phpstorm-2-0/</u>
3. 安装浏览器调试插件(安装步骤略)
火狐下安装easy xdebug
谷歌下安装 xdebug helper
官方插件说明:<u>http://www.jetbrains.com/phpstorm/marklets/</u>
- 走到这步配置基本就算完成,可以开始调试程序
在程序中设置断点
在工具栏中选择要调试的应用(位于软件右上角的下拉列表)
点击 Start Listen PHP Debug Connections 按钮,即那个红色的电话按钮,让其变成绿色,即开始监听 PHP Debug 连接;
点击工具栏中的 Debug(臭虫图标) 按钮,或者从菜单中选择 Run –> Debug,你就开始了 Debug 之旅…
附属说明:根据断点配置,或在打开 Debug URL 的过程中,或在 POST 之后,如果 PhpStorm 监听到了 Debug 连接,就会立即切换到编辑器界面,并跳转到设置的断点处,浏览器端会等待 PhpStorm 的操作。不想调试了,记得刚刚那个电话按钮嘛,再点一下,让其变成红色,就好了。
本文档参考:
<u>http://blog.csdn.net/meegomeego/article/details/25731615</u>
<u>http://www.chenxuanyi.cn/xampp-phpstorm-xdebug.html</u>
相关问题:
1. xdebug是什么?
2. 判断xdebug是否安装?
方法1: 查看phpinfo页面,搜索是否存在xdebug;
方法1:查看php扩展文件夹中是否存在xdebug扩展;
方法3:命令行执行“php.exe.path”/php -m
3. "waiting for incoming connection with ide key '*****'"的可能原因?
1. 配置文件错误(非常严重的低级错误),wamp等软件的php.ini文件在Apache下面;
2. Phpstorm配置错误,例如端口号与ini文件不一致。
3. 没有设置有效的断点也会报这样的错误,比方说我在B页面设置了断点,而要调试的页面根本不走B页面;
4. DBGp Proxy中的host设置错误;