客户端->http服务->php->代理->VSCode
php -i
在 php.ini 的最后加上如下内容
xdebug 2.9
[Xdebug]
; Xdebug 拓展路径
zend_extension=""
; 分析器输出路径
xdebug.profiler_output_dir=""
; 日志路径
xdebug.remote_log=""
; 跟踪输出路径
xdebug.trace_output_dir=""
; 是否开启远程调试
xdebug.remote_enable=on
; 是否开启分析器
xdebug.profiler_enable=on
; 允许调试的客户端IP
xdebug.remote_host=127.0.0.1
; 远程调试的端口
xdebug.remote_port=9002
; 开启远程调试自动启动
xdebug.remote_autostart=on
; 显示局部变量
xdebug.show_local_vars = on
; 显示默认的错误信息
xdebug.default_enable = on
; ide key
xdebug.idekey = "vscode"
请根据实际填写以下参数
; Xdebug 拓展路径
zend_extension=""
; 分析器输出路径
xdebug.profiler_output_dir=""
; 日志路径
xdebug.remote_log=""
; 跟踪输出路径
xdebug.trace_output_dir=""
; 允许调试的客户端 IP
xdebug.remote_host=127.0.0.1
; 远程调试的端口
xdebug.remote_port=9002
xdebug 3.0
[Xdebug]
zend_extension = path/to/xdebug
xdebug.mode = "debug"
xdebug.idekey = "vscode"
; 允许调试的客户端 IP
xdebug.client_host = 127.0.0.1
; 远程调试的端口
xdebug.client_port = 9002
xdebug.connect_timeout_ms = 2000
这里的 允许调试的客户端 IP 就是代理服务器的 IP,远程调试的端口 就是代理服务器的端口
新建一个 frps.ini 文件,并添加以下内容
[common]
bind_port = 7080
token = sl12321dfkjsldfjsld3
启动 frp
frps -c frps.ini
下载 frp
新建一个 frpc.ini 文件,并添加以下内容
[common]
server_addr = 192.168.xxx.xxx
server_port = 7080
token = sl12321dfkjsldfjsld3
[xdebug]
type = tcp
local_ip = 0.0.0.0
local_port = 9098
remote_port = 9098
server_addr 填的是代理服务器的 ip ,server_port 需要和代理服务器的端口一致,服务器的 token 和本地的 token 需要一致
启动 frp
frpc -c frpc.ini
{
"name": "Listen for remote XDebug",
"type": "php",
"request": "launch",
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
},
"port": 9098,
"env": {
"DBGP_IDEKEY":"vscode"
}
}
需要注意的是,代理服务器的安全组和防火墙需要放行相应的端口,这里需要放行的端口是 7080 和 9098
其实可以用 ssh 的端口转发来替代 frp 的
ssh -o ServerAliveInterval=60 -f -N -g -L 127.0.0.1:9098:远程服务器地址:9098 远程服务器用户名@远程服务器地址
在VSCode里调试PHP