Xdebug安装以及简单使用

0x00 前言

通过几次的练习,让我发现了我对php debug能力的不足,导致常常找不到出错点,这次专门学习xdebug以提高我debug的能力,关于xdebug我大概将会分为安装和使用技巧两篇文章来讲述,此片为安装篇,技巧篇已更新,在Tools分类下可找到

0x01 xdebug安装

先通过phpinfo的信息,去下面的网站获取对应版本的xdebug

1
https://xdebug.org/wizard.php

这里可以用下面的代码来直接输出phpinfo的信息,然后进行复制

1
var_dump(phpinfo());

点击返回的phpxxxx.dll(xxxx为版本信息),即可下载dll文件,然后将下载好的dll文件放在php目录下的ext文件夹中

比如我的路径如下

1
C:\wamp64\bin\php\php7.4.0\ext

然后返回php目录,打开php.ini,并加入以下文本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[xdebug]
zend_extension ="C:\wamp64\bin\php\php7.4.0\ext\php_xdebug-2.9.6-7.4-vc15-x86_64.dll"
;填入刚刚放好的dll文件的路径
xdebug.auto_trace= On
;是否开启异常跟踪
xdebug.remote_enable = On
;启用性能检测分析
xdebug.profiler_enable = On
;启用代码自动跟踪
xdebug.auto_trace=On
xdebug.profiler_enable_trigger = On
xdebug.profiler_output_name = cachegrind.out.%t.%p
;指定性能分析文件的存放目录
xdebug.profiler_output_dir ="\wamp64\bin\php\php7.4.0\tmp"
;填入php目录下的tmp文件夹的路径
xdebug.show_local_vars=0

;php远程调试
xdebug.show_exception_trace= On
;是否开启远程调试自动启动
;xdebug.remote_autostart= off
xdebug.remote_autostart= 1
;是否开启远程调试
;xdebug.remote_enable = On
xdebug.remote_enable= On

;配置端口和监听的域名
;xdebug.remote_host = localhost
;xdebug.remote_host=192.168.1.71
;xdebug.remote_host=127.0.0.1
;如果要使用远程调试,域名就写远程域名
xdebug.remote_port=9000
xdebug.remote_host="localhost"


xdebug.idekey="PHPSTORM"

配置完成后,重启环境,然后打开phpinfo,看到有xdebug就说明你成功到这一步了

0x02 phpstorm的debug配置

1. 只使用phpstorm进行debug

打开phpstorm->file->setting->Language&Framework->PHP->Debug

图中的Debug port要与php.ini中的xdebug.remote_port设置的相同,然后四个选项都勾上

若不需要使用浏览器,只需要在phpstorm中运行程序,并且进行debug,配置到这里就可以了

在程序中打好断点,点击1开启监听,然后点击2即可进入debug,注意不是点2右边的小虫子!

(这里使用的使PHP Script)

当然,这种debug方式的局限性很大,对于一个网站来说,很多功能都难以测试,所以这种debug一般适用于单个php脚本文件,对于整个网站来说并不合适,所以要对整个网站进行debug,还是推荐使用以下方法

2. 使用浏览器+phpstorm进行debug

解释一下,这个debug指的是php文件已经部署在本地或者云服务器上运行着,然后使用phpstorm对网站进行断点与调试,而不仅仅是代码在phpstorm里运行

请在完成0x02_1中的配置之后,再来接着配置

选择setting - languages& framework - Debug中的DBGp Proxy

如图配置(Host与php.ini中的xdebug.remote_host保持一致)

然后选择Servers

这里的port选择默认的80,Debugger选择Xdebug,Host填入php.ini中的xdebug.remote_host的值

Use … 那个勾打上,然后Absolute path on the server填入服务器上的网站根目录的绝对路径(如/var/www/html),这里由于我们服务器在本地,所以就直接写本地的路径

最后验证服务器调试配置

先将代码部署到服务器上并运行,我这里采用phpstudy进行模拟

打开Run>Web Server Debug Validation

如图进行配置

Chrome的XDebug插件安装

点击链接安装Install Xdebug Helper

(这个插件的作用是,如果启用了这个插件,就可以不需要点debug图标(小虫子)就可以进行debug了)

至此,安装过程结束

注意,正常情况下,50s未响应成功就会出现服务器500错误,然后调试直接被中断,可以通过以下方式来解决这个问题

如果使用apache服务器

在apache/conf/httpd.conf 最后加入以下两行

1
2
FcgidIOTimeout 3600
Timeout 1800

如果是apache2,就将文件路径改为/etc/apache2/apache2.conf,其他操作相同

0x03 简单使用

点击下图按钮,使监听处于打开模式

接着下好断点,用chrome浏览网站,网站将自动停在断点处,phpstrom内也可监听到各个变量的值

0x04 结尾

随着之后对xdebug的不断了解,本文会不定期更新,若对本文有疑问或指正,可在下方评论区给出,作者会尽快回复或更新


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!