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秒,让调试得到时间