突然,随着新安装的 Vagrant/Homestead 运行新安装的 Big Sur (macOS),我的(旧)Xdebug 配置出于某种原因不想与我的 VSCode 一起使用。
我花了好几个小时试图弄清楚,尝试了许多不同的设置,但没有运气。Xdebug 不想工作。
那么如何正确设置它以使其工作呢?
突然,随着新安装的 Vagrant/Homestead 运行新安装的 Big Sur (macOS),我的(旧)Xdebug 配置出于某种原因不想与我的 VSCode 一起使用。
我花了好几个小时试图弄清楚,尝试了许多不同的设置,但没有运气。Xdebug 不想工作。
那么如何正确设置它以使其工作呢?
它不再正常工作的主要原因是,突然有了最新版本的 Homestead,我们在版本 3 中有一个 Xdebug,它改变了 Xdebug 2 的许多选项。它主要简化了事情,但也破坏了以前的设置。您可以在他们的页面上阅读有关 Xdebug 3 中对配置变量所做的更改的更多信息。
为了让 Xdebug 在 Homestead / Vagrant / macOS (Big Sur) 上工作,这些是所需的步骤。
您必须找到xdebug.ini
易于显示phpinfo()
和检查路径的位置,在我的情况下是:/etc/php/7.3/fpm/conf.d/20-xdebug.ini
打开它并编辑sudo vi /etc/php/7.3/fpm/conf.d/20-xdebug.ini
:
我的配置如下:
zend_extension=xdebug.so
xdebug.client_port = 9003
xdebug.max_nesting_level = 512
xdebug.mode=debug
xdebug.start_upon_error = true
xdebug.idekey = VSCODE
; The MacOS way
xdebug.discover_client_host = false
xdebug.client_host = 10.254.254.254
发生变化的事情:
xdebug.mode=debug
您必须保存文件并php-fpm
通过以下方式重新启动:sudo service php7.3-fpm reload
对于 macOS(在我的 Windows 机器上不需要),您必须:
确保您已在 MacOS 上创建主机地址别名,并且 10.254.254.254 是您的 localhost 的别名。
通过这样做:sudo ifconfig lo0 alias 10.254.254.254
。这里也有更详细的解释。
安装 VSCode PHP 调试 ( vscode-php-debug ) 扩展。
通过单击左侧菜单中的调试图标来配置 VSCode,然后编辑包含调试器配置的 JSON 文件。
粘贴这个:
{
"version": "0.2.0",
"configurations": [
{
"name": "My XDebug on Homestead",
"type": "php",
"request": "launch",
"pathMappings": {
"/home/vagrant/code/myproject": "${workspaceFolder}"
},
"port": 9003
}
]
}
最后安装Chrome Xdebug Helper扩展并在您想要进行调试时打开(绿色错误)调试模式。
一件额外的事情。如果您想启用/禁用 Xdebug,假设出于性能原因,有一种非常简单快捷的方法可以做到这一点。
使能够:
sudo phpenmod xdebug
sudo service php7.3-fpm reload
禁用:
sudo phpdismod xdebug
sudo service php7.3-fpm reload
如您所见,必须正确设置不同位置的许多不同内容才能使其正常工作。这需要大量的谷歌搜索和耐心,所以我认为把它放在这里对你和我未来的安装很有用。:)
对于 Xdebug 版本 3.0.3
将 IDE 设置为使用调试端口 - 9003
修改/etc/php/7.x/fpm/conf.d/20-xdebug.ini
zend_extension = xdebug.so
xdebug.remote_port = 9003
xdebug.max_nesting_level = 512
xdebug.mode = debug
xdebug.client_host = 192.168.10.1
如果Homestead.yaml
IP 地址包含不同的子网,则此 IP 地址可能不同...
顺便说一句,编辑后20-xdebug.ini
,像这样重新启动你的 FPM
$ sudo service php7.4-fpm restart
并重新启动浏览器和 IDE
附言
使用 php 7.4 在 NetBeans 和 Vagrant (Laravel homestead) 上测试,主机 - WIN-10
首先,确保您的站点运行的是哪个版本的 PHP-FPM(将laravel.test更改为您配置的站点的名称)。请记住,您可以为 Homested.yaml文件中的每个站点选择要使用的 PHP 版本。
$ cat /etc/nginx/sites-available/laravel.test | grep fastcgi_pass
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
这将告诉您在 Homestead 虚拟机中编辑哪个配置文件(注意:将 8.0 更改为您的 PHP 版本,如果不同)。
$ sudo nano /etc/php/8.0/fpm/conf.d/20-xdebug.ini
在这里,您可以删除所有以开头的行xdebug.*
,而是添加以下行:
xdebug.mode=debug
xdebug.client_host=192.168.10.1
xdebug.client_port=9003
xdebug.max_nesting_level = 512
注意: 192.168.10.1默认情况下是 VirtualBox 中主机的 IP 地址,它应该与您在 LAN 中的实际 IP 地址不同。请注意,这max_nesting_level
不是必需的,这是 Homestead 的默认设置,所以我把它留在那里。
现在,在主机上的 Visual Studio Code 中,您可以将 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",
// "stopOnEntry": true,
"pathMappings": {
"/home/vagrant/laravel.test": "${workspaceFolder}"
},
"port": 9003
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9003
}
]
}
PS。我一直"stopOnEntry": true
注释,以便在需要时可以简单地取消注释,否则我只是在 vscode 中使用断点。