在 vs 代码中,我将远程 ssh 和远程 ssh:explorer 在 ssh 配置中我尝试转发端口 9000,vs 代码将在该端口上侦听服务器上的 xdebug
Host debug
HostName y.y.y.y
User web
ForwardAgent yes
DynamicForward 9000
# RemoteForward 52698 127.0.0.1:52698
然后我连接到服务器,安装 x_debug 插件,在服务器上创建一个文件夹 .vscode,它包含 launh.json 调试器的设置
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "VS",
"type": "php",
"hostname": "localhost",
"port": 9000,
"request": "launch",
"stopOnEntry": true,
"log":true,
"pathMappings": {
"/var/www/html": "/var/web/sites/namesiteY",
"/app": "../"
}
}
]
}
在该站点的服务器上安装了 x_debug(根据此说明),将这些设置添加到 php.ini:
;XDEBUG START
zend_extension = /usr/lib/php/20151012/xdebug.so
[XDEBUG]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_host = x.x.x.x
xdebug.remote_port = 9000
xdebug.idekey = VS
xdebug.remote_connect_back = 1
xdebug.force_display_errors = On
;XDEBUG END
结果,我尝试按开始调试以获得简单的测试脚本
$home = 1 + 4;
echo $home;
$value = 0;
if ($value == 0 ) {
echo "TRUE"; // ТУТ BREAKPOINT
} else {
echo "False"; // И ТУТ
}
什么也没有发生,变量没有被写入,这出现在调试控制台中:
<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: true }
我尝试了使用和不使用 chrome 插件,检查了 ide 是否正在侦听端口 9000: http ://skrinshoter.ru/s/090719/1A2n8TG0?a ,一切似乎都很好我在哪里搞砸了?
附言 1
在 xdebug 插件文档中有一个用于 vs 代码的映射示例:
// server -> local
"pathMappings": {
"/var/www/html": "${workspaceRoot}/www",
"/app": "${workspaceRoot}/app"
}
关于注册这些方式的内容还不是很清楚?关于 .vscode 文件夹?在我的情况下有必要吗?
ps2
y.y.y.y - ip сервера с удаленным сайтом
x.x.x.x - мой статичный ip ( там где установлена ide)
关于连接到 Vagrant 的示例。家庭系统 Xubuntu 18.04 guest ubuntu 16.04 Remote SSH 插件已连接
设置
.ssh/config我们正在连接,我们在左下角写了
ssh:vagrant我们将必要的扩展放在远程服务器上。在这种情况下,您需要 php 调试。重新启动,尝试检查断点。
我们不会触及 launch.json 中的 mappath。为什么?我们得到了以下情况:vscode 将自己连接到远程服务器,现在将位于远程计算机上。xdebug 应该不会向你的 IP 地址发送数据,而是向其本地地址发送数据,并且我们的 vscode 会监听它
当我们希望远程服务器从我们的计算机通过 Internet 向我们发送数据时,我们编写配置跟踪 这是在 vscode 中
而这在 xdebug idekey 中并不是强制性的,似乎需要在环境中(代码工作的地方)注册一个密钥,然后可以通过浏览器传输。
总的来说,最方便的方法是通过 ssh 进行调试。