windows 10 系统,使用 docker 搭建的 lnmp 环境,php 版本为 8.2,本篇文章记录一下在 PhpStorm 2022.1.4(中文版) 上配置 xdebug 的过程。
1. 配置客户端 xdebug 装备
如果程序是网页形式的,则需要在浏览器上安装 xdebug 扩展,具体安装 xdebug 扩展的方式可网上搜索。
本次需要调试的程序是接口形式的,通过 postman 模拟 http 请求的形式,只需要在 Header 里加上:
Cookie XDEBUG_SESSION=PHPSTORM
即可,这样在 postman 发送 http 请求的时候,就会自动在 header 头里加上 XDEBUG_SESSION=PHPSTORM 项,xdebug 就是靠这个参数判断是否需要走 xdebug 流程的,下面是一个 curl 模拟示例:
curl 'http://www.phpernote.com/article/list' \ -H 'Accept: application/json, text/plain, */*' \ -H 'Accept-Language: zh-CN,zh;q=0.9' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Origin: http://www.phpernote.com' \ -H 'Pragma: no-cache' \ -H 'Referer: http://www.phpernote.com/home/index' \ -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.160 Safari/537.36' \ -H 'X-Api-MenuId;' \ -H 'X-Api-Nonce: 93206335' \ -H 'X-Api-Signature: NmY3OTM5ODhiZTQ1YzUxYTk3NzU0NTdiMDg3ZGZmMjYxMDYzZmNkMDc4ZTRlNDk3ZjcwMTk4MWIxMTc5NWFlNQ==' \ -H 'X-Api-TimeStamp: 941784970685' \ -H 'X-Api-access-token: plvLrdM9Oz8M7ycNAf0lAZ-ir_Lp2IC1' \ -H 'X-Api-language: zh' \ -H 'Cookie: XDEBUG_SESSION=PHPSTORM' \ --compressed \ --insecure
2. 下载并安装 xdebug 扩展
去官网下载 xdebug 扩展,官网地址如下:
https://pecl.php.net/package/xdebug
本次下载的是最新版本的 3.3.2 版本,依次执行如下命令:
wget https://pecl.php.net/get/xdebug-3.3.2.tgz tar -zxvf xdebug-3.3.2.tgz cd xdebug-3.3.2 /usr/local/php8.2.14/bin/phpize #如果机器上装有有多个版本的php,则执行: #./configure --with-php-config=/usr/local/php8.2.14/bin/php-config #不知道 php-config 文件在哪里,可以执行:find / -name 'php-config' 查找 ./configure make sudo make install
一切顺利的话,至此安装完毕。
配置 xdebug,将如下信息加入到 php.ini 文件中去:
zend_extension = xdebug xdebug.mode=debug xdebug.client_host=host.docker.internal ;宿主机IP地址 xdebug.client_port=9003 ;监听端口 xdebug.remote_handler=dbgp xdebug.idekey="PHPSTORM" xdebug.collect_params=1 xdebug.collect_return=1 xdebug.auto_trace=On xdebug.profiler_enable=On xdebug.remote_enable=On xdebug.remote_autostart=1
3. 配置 phpstorm
依次点击:
文件 -> 设置 -> PHP -> 调试
在 Xdebug 那一栏的调试端口填上:9003
点击下面的《确定》
然后点击 phpstorm 上面面板上的那个电话小图标,使其处于监听状态。
然后在需要调试的代码处打上断点,刷新(网页形式)或者使用 postman 请求相应的代码即可。