PHPStorm配置xdebug调试php代码

PHPStorm配置xdebug调试php代码

V20160907

理由:

当项目越来越复杂,排错就越发困难。
你以为代码是这么运行的,但就是有未想到的功能导致流程变得不可捉摸。
此时我们需要调试,调试……

附注:PhpStorm 内建了 Zend Debugger 和 Xdebug 支持

步骤(windows):

  1. (服务端)安装配置xdebug
      1. 下载适合当前PHP版本的dll文件,
        官方下载地址:<u>http://xdebug.org/download.php</u>;
      1. 将下载的dll文件放入php安装目录下的扩展文件夹(通常为ext文件夹)中;
      1. 设置 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 '*****'****”错误,笔者为这个问题曾排错一晚上,复制以上代码注意引号问题

  1. 重启Apache服务器(修改php.ini文件后均需重启服务器让配置文件生效);
  1. (客户端)安装、配置PHPStorm(这里的配置以PHPStorm 8.0.2为准)
  1. 安装PHPStorm(略);

  2. 配置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>

  1. 走到这步配置基本就算完成,可以开始调试程序
  1. 在程序中设置断点

  2. 在工具栏中选择要调试的应用(位于软件右上角的下拉列表)

  3. 点击 Start Listen PHP Debug Connections 按钮,即那个红色的电话按钮,让其变成绿色,即开始监听 PHP Debug 连接;

  4. 点击工具栏中的 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是什么?

A:请参看http://baike.baidu.com/link?url=44ufFU1aOz4YYN-pBOTWIUNQFcxAg0dHIVnQSpjBJ-zX5k6nF6vSHGWEoohO5qaP3tbum1E_KBqG97Y67oywaq

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设置错误;

推荐阅读更多精彩内容