流浪者 + xdebug + vscode
vagrant + xdebug + vscode
- OS X 版本 12.1
- Vagrant 版本 2.2.19
- vagrant machine ubuntu 16.04
- php 7.4
- xdebug v3.0.2
- nginx 服务器
我将 xdebug.ini 的配置更改为:
date.timezone = "Europe/Berlin"
short_open_tag = Off
xdebug.idekey=VSCODE
xdebug.mode=debug
xdebug.start_with_request=trigger
xdebug.client_port=9003
xdebug.client_host = 10.254.254.254
xdebug.max_nesting_level = 512
xdebug.log_level=10
xdebug.connect_timeout_ms=600
xdebug.log=/var/log/xdebug/xdebug33.log
xdebug.show_error_trace=true
在 VS 代码中 launch.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": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/":"../../../projects",
},
"log":true
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
这是开始调试后的日志输出:
[24787] Log opened at 2021-12-27 09:48:14.979149
[24787] [Step Debug] INFO: Connecting to configured address/port: 10.254.254.254:9003.
[24787] [Step Debug] ERR: Time-out connecting to debugging client, waited: 600 ms. Tried: 10.254.254.254:9003 (through xdebug.client_host/xdebug.client_port) :-(
[24787] Log closed at 2021-12-27 09:48:15.606819
我尝试将此端口添加到 vagrant 文件中,如下所示:
Vagrant.configure(2) do |config|
config.vm.box_url = "file:///Users/test/ubuntu16_php7.4_vagrantbox"
config.vm.box = "baazzbox"
config.vm.provider "virtualbox" do |v|
v.memory = 5120
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//var/www","1"]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/var/www","1"]
end
#config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.33"
config.vm.network "forwarded_port", guest: 9003, host: 9003
config.vm.synced_folder "../", "/var/www"
config.vm.provision "fix-no-tty", type: "shell" do |s|
s.privileged = false
s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \&\& mesg n/' /root/.profile"
end
config.vm.provision "file", source: "root", destination: "~"
config.vm.provision :shell, path: "setup_vagrant.sh"
config.vm.box_check_update = false
end
我尝试添加和删除这一行:
config.vm.network "forwarded_port", guest: 9003, host: 9003
但它具有相同的输出。
我也按如下方式重新启动服务:
sudo service php7.4-fpm reload
sudo systemctl restart nginx.service
终于找到问题了,
- 将 vagrant 时区更改为与主机时区相同
- 服务器 xdebug 配置 .ini 文件更改为:
xdebug.idekey=VSCODE
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_autorestart = 1
xdebug.client_port=9003
xdebug.discover_client_host=1
xdebug.max_nesting_level = 512
xdebug.log_level=10
xdebug.connect_timeout_ms=600
xdebug.log=/var/log/xdebug/xdebug33.log
xdebug.show_error_trace=true
注意这个配置与xdebug V3相关
- 在 vagrant 文件中,将端口 80 添加为 forwrded_port 就像这样
Vagrant.configure(2) do |config|
config.vm.box_url = "file:///Users/toqaabbas/projects/theqar_vagrant/ubuntu16_php7.4_vagrantbox"
config.vm.box = "baazbox"
config.vm.provider "virtualbox" do |v|
v.memory = 5120
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//var/www","1"]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/var/www","1"]
end
#config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.33"
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Asia/Amman /etc/localtime", run: "always"
config.vm.synced_folder "../", "/var/www"
config.vm.provision "fix-no-tty", type: "shell" do |s|
s.privileged = false
s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \&\& mesg n/' /root/.profile"
end
config.vm.provision "file", source: "root", destination: "~"
config.vm.provision :shell, path: "setup_vagrant.sh"
config.vm.box_check_update = false
end
然后运行“vagrant reload”重新构建 vagrant
- 最终将 lanuch.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": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www" : "/Users/myusername/projects"
},
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
最重要的部分是“pathMappings”的正确位置
终于成功了:)
- OS X 版本 12.1
- Vagrant 版本 2.2.19
- vagrant machine ubuntu 16.04
- php 7.4
- xdebug v3.0.2
- nginx 服务器
我将 xdebug.ini 的配置更改为:
date.timezone = "Europe/Berlin"
short_open_tag = Off
xdebug.idekey=VSCODE
xdebug.mode=debug
xdebug.start_with_request=trigger
xdebug.client_port=9003
xdebug.client_host = 10.254.254.254
xdebug.max_nesting_level = 512
xdebug.log_level=10
xdebug.connect_timeout_ms=600
xdebug.log=/var/log/xdebug/xdebug33.log
xdebug.show_error_trace=true
在 VS 代码中 launch.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": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/":"../../../projects",
},
"log":true
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
这是开始调试后的日志输出:
[24787] Log opened at 2021-12-27 09:48:14.979149
[24787] [Step Debug] INFO: Connecting to configured address/port: 10.254.254.254:9003.
[24787] [Step Debug] ERR: Time-out connecting to debugging client, waited: 600 ms. Tried: 10.254.254.254:9003 (through xdebug.client_host/xdebug.client_port) :-(
[24787] Log closed at 2021-12-27 09:48:15.606819
我尝试将此端口添加到 vagrant 文件中,如下所示:
Vagrant.configure(2) do |config|
config.vm.box_url = "file:///Users/test/ubuntu16_php7.4_vagrantbox"
config.vm.box = "baazzbox"
config.vm.provider "virtualbox" do |v|
v.memory = 5120
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//var/www","1"]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/var/www","1"]
end
#config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.33"
config.vm.network "forwarded_port", guest: 9003, host: 9003
config.vm.synced_folder "../", "/var/www"
config.vm.provision "fix-no-tty", type: "shell" do |s|
s.privileged = false
s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \&\& mesg n/' /root/.profile"
end
config.vm.provision "file", source: "root", destination: "~"
config.vm.provision :shell, path: "setup_vagrant.sh"
config.vm.box_check_update = false
end
我尝试添加和删除这一行:
config.vm.network "forwarded_port", guest: 9003, host: 9003
但它具有相同的输出。
我也按如下方式重新启动服务:
sudo service php7.4-fpm reload
sudo systemctl restart nginx.service
终于找到问题了,
- 将 vagrant 时区更改为与主机时区相同
- 服务器 xdebug 配置 .ini 文件更改为:
xdebug.idekey=VSCODE
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_autorestart = 1
xdebug.client_port=9003
xdebug.discover_client_host=1
xdebug.max_nesting_level = 512
xdebug.log_level=10
xdebug.connect_timeout_ms=600
xdebug.log=/var/log/xdebug/xdebug33.log
xdebug.show_error_trace=true
注意这个配置与xdebug V3相关
- 在 vagrant 文件中,将端口 80 添加为 forwrded_port 就像这样
Vagrant.configure(2) do |config|
config.vm.box_url = "file:///Users/toqaabbas/projects/theqar_vagrant/ubuntu16_php7.4_vagrantbox"
config.vm.box = "baazbox"
config.vm.provider "virtualbox" do |v|
v.memory = 5120
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//var/www","1"]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/var/www","1"]
end
#config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.33"
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Asia/Amman /etc/localtime", run: "always"
config.vm.synced_folder "../", "/var/www"
config.vm.provision "fix-no-tty", type: "shell" do |s|
s.privileged = false
s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \&\& mesg n/' /root/.profile"
end
config.vm.provision "file", source: "root", destination: "~"
config.vm.provision :shell, path: "setup_vagrant.sh"
config.vm.box_check_update = false
end
然后运行“vagrant reload”重新构建 vagrant
- 最终将 lanuch.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": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www" : "/Users/myusername/projects"
},
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
最重要的部分是“pathMappings”的正确位置
终于成功了:)