PHP远程调试 - VS Code

PHP远程开发

远程调试前,请先完成PHP远程开发配置


本地Xdebug调试原理

IDE集成了Xdebug插件,并监听指定端口,一般为9000;

Xdebug作为PHP扩展,需要在php.ini中对其进行配置,配置内容包含欲发送数据的端口,即IDE监听的端口(一般为9000)。

Xdebug通过请求参数XDEBUG_SESSION_START来判断是否开启调试,Xdebug和IDE通过相同端口进行通迅、传递断点行数、断点运行情况等。


Linux安装Xdebug

1.0> 复制 phpinfo() 输出的所有信息

## 推荐通过如下命令行打印PHP信息
## 清屏
## 打印PHP信息,并全选
clear && php -i

## <?php phpinfo(); ?>

2.0> 打开https://xdebug.org/wizard.php,粘贴 phpinfo() 输出的所有信息,然后点击下方按钮进行分析


3.0> 如下,分析结果中会出现适合当前环境的Xdebug版本,以及下载安装步骤:


4.0> 按照分析结果中的提示,安装配置Xdebug

4.1> 先安装必要软件

yum groupinstall "Development tools" && yum install php-devel autoconf automake

4.2> 下载安装Xdebug

cd / 
## 下载xdebug
wget http://xdebug.org/files/xdebug-3.0.4.tgz
## 解压
tar -xvzf xdebug-3.0.4.tgz
## 进入目录
cd xdebug-3.0.4
## 执行
phpize
## 执行
./configure
## 编译
make
## 复制到php扩展目录
cp modules/xdebug.so /usr/lib64/php/modules

4.3> 编辑php.ini

vim /etc/php.ini

添加如下内容

[Xdebug]
; xdebug.so位置
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.mode=debug
xdebug.start_with_request = yes
xdebug.discover_client_host = on
xdebug.client_port = 9000
xdebug.remote_handler=dbgp 
xdebug.idekey=PHPSTOR

5.0> 重启Apache

systemctl restart httpd.service;

6.0> 查看Xdebug是否安装成功


配置VS Code

1.0> 安装php debug插件

2.0> 打开VS Code调试面板

3.0> 点击运行或直接创建 launch.json 调试配置文件,文件内容如下:

{
   // 使用 IntelliSense 了解相关属性。 
   // 悬停以查看现有属性的描述。
   // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
   "version": "0.2.0",
   "configurations": [
      {
         "name": "Listen for Xdebug",
         "type": "php",
         "request": "launch",
         "port": 9000
      },
      {
         "name": "Launch currently open script",
         "type": "php",
         "request": "launch",
         "program": "${file}",
         "cwd": "${fileDirname}",
         "port": 0,
         "runtimeArgs": [
            "-dxdebug.start_with_request=yes"
         ],
         "env": {
            "XDEBUG_MODE": "debug,develop",
            "XDEBUG_CONFIG": "client_port=${port}"
         }
      },
      {
         "name": "Launch Built-in web server",
         "type": "php",
         "request": "launch",
         "runtimeArgs": [
            "-dxdebug.mode=debug",
            "-dxdebug.start_with_request=yes",
            "-S",
            "localhost:0"
         ],
         "program": "",
         "cwd": "${workspaceRoot}",
         "port": 9000,
         "serverReadyAction": {
            "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
            "uriFormat": "http://localhost:%s",
            "action": "openExternally"
         }
      }
   ]
}

4.0> 修改 launch.json 配置文件中的9000端口为 php.ini 配置文件中的 xdebug.client_port

5.0> 直接在浏览器中访问远程服务即可,无须显示的在URL中添加相关调试参数


注意事项

vscode远程开发调试时,远端服务可能无法随着客户端的关闭而销毁,导致大量占用服务器内存;如下命令可销毁远端vscode服务;

ps uxa | grep .vscode-server | awk '{print $2}' | xargs kill -9



举报

© 著作权归作者所有


0