Home > front end >  vagrant xdebug vscode
vagrant xdebug vscode

Time:12-29

  • OS X version 12.1
  • Vagrant version 2.2.19
  • vagrant machine has ubuntu 16.04
  • php 7.4
  • xdebug v3.0.2
  • nginx server

I changed the configuration of xdebug.ini to:

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

and in VS code 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/":"../../../projects",
            },
            "log":true
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003
        }
    ]
}

and this is the log output after start debugging :

[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

I tried to add this port to vagrant file as below :


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


i tried to add and remove this line :

  config.vm.network "forwarded_port", guest: 9003, host: 9003 

but it has the the same output

i do restart the services also as below :

sudo service php7.4-fpm reload
sudo systemctl restart nginx.service 

CodePudding user response:

Finally i found the problem ,

  • change the vagrant timezone to be same as host timezone
  • server xdebug configuration .ini file changed to be :
xdebug.idekey=VSCODE
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_autorestart = 1
xdebug.client_port=9003
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

note that this configuration related to xdebug V3

  • in vagrant file , add port 80 as forwrded_port to be like this

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

and then run "vagrant reload" to re-build vagrant again

  • finally change lanuch.json to be :
{
    // 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
        }
    ]
}

the most important part was the correct location of "pathMappings"

and finally it's works :)

  • Related