使用虚拟机在端口 9000 上进行 XDebug - EADDRINUSE :::9000
XDebug on port 9000 with a virtual machine - EADDRINUSE :::9000
我是 运行 我在 VirtualBox VM 上的 Symfony 应用程序。 PHP 是 运行 XDebug,并且配置正确。我知道这一点,因为其他人已经设法让它与同一 VM 的快照一起工作。
当我尝试在 VS Code XDebug 中配置时,我使用以下 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": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
但是当我点击 "Start Debugging: Listen for XDebug" 时,出现以下错误:
ERROR: listen EADDRINUSE :::9000
我尝试终止使用该端口的进程...令我惊讶的是我尝试连接的是虚拟机。
我在这个配置中错过了什么?
您正在尝试在 launch.json
中执行 launch
操作,这将导致 vscode 尝试 启动 一个新实例php 端口 9000.
上的 xdebug
尝试用 attach
配置替换您的 launch
配置。
希望对您有所帮助。
我自己找到了答案。
问题出在 Virtualbox 的配置上。
在网络设置中,端口 9000 有一个端口转发,它阻止了我的调试器在本地 运行。删除后,它可以正常工作。
其他应用程序(例如 MacOsX 上的本机 apache)、虚拟机、Docker 容器等的默认配置经常使用端口 9000...
一个可靠的解决方案是 - 使用不同的端口。例如,9001 :)
这意味着:
- 正在将您的 IDE xdebug 配置从端口 9000 更新到 9001;
添加到
你的 php.ini (xdebug.ini) 行
xdebug.remote_port=9001
此外,您可以通过telnet等工具查看您的9000端口使用情况
在 MacOS 上,我们可以使用终端来确定端口 9000 上打开的内容如下:
sudo lsof -nP -i4TCP:9000 | grep LISTEN
我们可以在上面使用 sudo,这样我们就可以看到不属于登录帐户的进程。
例如,当我执行上述操作时,我得到:
php-fpm 110 root 6u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 261 _www 0u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 262 _www 0u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
然后我们可以用这个命令结束进程:
sudo kill 110
然后我们将释放端口,这样我们就可以在没有冲突的情况下启动 Xdebug。
这帮我解决了。
在我的例子中,sonarqube 服务器 运行 在 9000 上,所以我将 xdebug 设置为 9002。
我是 运行 我在 VirtualBox VM 上的 Symfony 应用程序。 PHP 是 运行 XDebug,并且配置正确。我知道这一点,因为其他人已经设法让它与同一 VM 的快照一起工作。
当我尝试在 VS Code XDebug 中配置时,我使用以下 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": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
但是当我点击 "Start Debugging: Listen for XDebug" 时,出现以下错误:
ERROR: listen EADDRINUSE :::9000
我尝试终止使用该端口的进程...令我惊讶的是我尝试连接的是虚拟机。
我在这个配置中错过了什么?
您正在尝试在 launch.json
中执行 launch
操作,这将导致 vscode 尝试 启动 一个新实例php 端口 9000.
尝试用 attach
配置替换您的 launch
配置。
希望对您有所帮助。
我自己找到了答案。
问题出在 Virtualbox 的配置上。
在网络设置中,端口 9000 有一个端口转发,它阻止了我的调试器在本地 运行。删除后,它可以正常工作。
其他应用程序(例如 MacOsX 上的本机 apache)、虚拟机、Docker 容器等的默认配置经常使用端口 9000...
一个可靠的解决方案是 - 使用不同的端口。例如,9001 :)
这意味着:
- 正在将您的 IDE xdebug 配置从端口 9000 更新到 9001;
添加到 你的 php.ini (xdebug.ini) 行
xdebug.remote_port=9001
此外,您可以通过telnet等工具查看您的9000端口使用情况
在 MacOS 上,我们可以使用终端来确定端口 9000 上打开的内容如下:
sudo lsof -nP -i4TCP:9000 | grep LISTEN
我们可以在上面使用 sudo,这样我们就可以看到不属于登录帐户的进程。
例如,当我执行上述操作时,我得到:
php-fpm 110 root 6u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 261 _www 0u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 262 _www 0u IPv4 0x5cb825c4aa80be09 0t0 TCP 127.0.0.1:9000 (LISTEN)
然后我们可以用这个命令结束进程:
sudo kill 110
然后我们将释放端口,这样我们就可以在没有冲突的情况下启动 Xdebug。
这帮我解决了。
在我的例子中,sonarqube 服务器 运行 在 9000 上,所以我将 xdebug 设置为 9002。