Debian下PHP调试环境搭建
前言
Xdebug是PHP的扩展,用于协助调试和开发。
- 它包含一个用于IDE的调试器
- 它升级了PHP的
var_dump()函数 - 它为通知,警告,错误和异常添加了堆栈跟踪
- 它具有记录每个函数调用和磁盘变量赋值的功能
- 它包含一个分析器
- 它提供了与PHPUnit一起使用的代码覆盖功能。
本地跟代码必备的工具。 但不推荐在生产环境中使用xdebug,因为他太重了。
预置环境
-
OS: Kali GNU/Linux Rolling x86_64
-
Kernel: 5.7.0-kali1-amd64
-
PHP version: 7.4.14
-
Server API: FPM/FastCGI
-
nginx version: nginx/1.18.0
-
PhpStorm version: 2020.3
下载安装Xdebug
在web服务器中放入phpinfo,(注意最好是使用web服务,如果是本地php脚本的话php.ini可能会不一样)
访问之后将整个页面源码Ctrl+A Ctrl+C复制到框里面:

分析之后会自动给你最合适的版本,并且告诉你后续安装步骤。
下载给出的.tar.tgz文件
1.安装PHP拓展
apt-get install php-dev autoconf automake
2.解压
tar -xvzf xdebug-3.0.2.tgz
cd xdebug-3.0.2
3.执行以下命令,如果报错Command not found,那就先执行1.
phpize
完成之后会输出类似于以下内容,因环境而异,具体还请参考https://xdebug.org/wizard
Configuring for:
...
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
随后分别需要执行./configure和make以及cp等命令,因环境而异,具体参考https://xdebug.org/wizard,这里不再累述。
配置Xdebug
打开php.ini
在末尾写入(最好去掉注释):
[xdebug]
#pay attention,xdebug3 is different from 2
zend_extension = /usr/lib/php/20190902/xdebug.so#这里位置因环境而异
xdebug.mode=debug
xdebug.remote_handler = dbgp
xdebug.client_host = 127.0.0.1 #安装有PhpStorm的机器
xdebug.client_port = 9001 #端口可修改,防止冲突
xdebug.remote_mode=req #可以设为req或jit,req表示脚本一开始运行就连接远程客户端,jit表示脚本出错时才连接远程客户端。
xdebug.idekey = PHPSTROM
**注意:**如果你想 Xdebug 和 OPCache 一起使用,必须在 OPCache 之后加载 Xdebug zend_extension 代码行。
因为我下载的版本是Xdebug3,相对于Xdebug2,remote_enable被mode取代,remote_host被client_host取代,remote_port改为client_port,默认为9003端口,client_host默认为localhost。
如果你下载的是Xdebug2:
[xdebug]
zend_extension= /usr/lib/php/20190902/xdebug.so
xdebug.remote_enable = on
xdebug.remote_port = 9001
xdebug.remote_host = 127.0.0.1
写入完毕后,重启php-fpm或者重启apache。
之后再次访问phpinfo,按Ctrl+F搜索Xdebug,成功的话你会看到和下面差不多的情况

配置PhpStorm
打开PhpStorm;
在File->Languages & Frameworks->PHP下,选择CLI interpreter为你刚才配置的PHP版本

成功的话会出现Xdebug的字样

没有的话重新打开php.ini配置
选择Debug分支,保证port和php.ini中的一致

配置DBGp Proxy,一样。

配置Server

点击右上角,编辑配置

在Server下拉框中,选择我们在第4步设置的Server服务名称(之前配置的Server),Browser选择你要使用的浏览器
ALL Right;
配置FireFox
这一步可以不需要,不过配置之后方便一点;
FireFox访问https://addons.mozilla.org/en-US/firefox/addon/xdebug-helper-for-firefox/,安装插件。
安装完成之后,开启插件,给程序下个断点,访问,如果成功PhpStorm会自动跳出来:

好了,到这里我们就配置完成了。
随后携带Cookie: XDEBUG_SESSION="ECLIPSE"头访问(或者开FireFox插件,一个道理)就可以进入debug了
另外在nginx.conf里面设置fastcgi_read_timeout 600可以调整fastcgi进程向 nginx 进程发送输出过程的超时时间,默认值60秒,让调试得到时间