Php 带有虚拟机的端口9000上的XDebug-EADDRINUSE::9000
我正在VirtualBox虚拟机上运行Symfony应用程序。PHP正在使用XDebug运行,并且配置正确。我知道这一点,因为其他人已经设法使它与同一虚拟机的快照一起工作 当我尝试在VS代码XDebug中配置时,我使用以下Php 带有虚拟机的端口9000上的XDebug-EADDRINUSE::9000,php,visual-studio-code,virtualbox,xdebug,Php,Visual Studio Code,Virtualbox,Xdebug,我正在VirtualBox虚拟机上运行Symfony应用程序。PHP正在使用XDebug运行,并且配置正确。我知道这一点,因为其他人已经设法使它与同一虚拟机的快照一起工作 当我尝试在VS代码XDebug中配置时,我使用以下launch.json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. //
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
}
]
}
但是,当我单击“开始调试:侦听XDebug”时,我得到以下错误:
错误:侦听EADDRINUSE::9000
我试图终止正在使用该端口的进程。。。令我惊讶的是,这就是我试图连接的虚拟机
在这个配置中我错过了什么?您正在尝试在
launch.json
中执行launch
操作,这将导致vscode尝试在端口9000上启动一个新的php实例
尝试将启动
配置替换为附加
配置
希望有帮助。我自己差不多找到了答案 问题在于Virtualbox的配置
在网络设置中,存在端口9000的端口转发,这阻止了我的调试器在本地运行。一旦删除,它就可以正常工作。端口9000通常用于其他应用程序(例如MacOsX上的本机apache)的默认配置,也包括VM、Docker容器等 可靠的解决方案是使用不同的端口。例如,9001:) 这意味着:
- 将IDE xdebug配置从端口9000更新为9001李>
- 增加 您的php.ini(xdebug.ini)行
此外,您还可以在MacOS上使用telnet等工具检查9000端口的使用情况。我们可以使用终端通过以下方式确定端口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。切换到9001端口或其他自由端口(在php.ini和您的编辑器中)。除此之外,该端口已被另一个应用程序使用(正如您所说的VirtualBox)。。因此,您必须首先进行配置…因为VSC无法在该端口上开始侦听,这确实是一个解决方案,但我不想更改VM,因为它来自我们共享的快照。我想知道为什么其他人没有这个问题,我也有。好吧——你需要调查一下VirtualBox在什么时候占用了9000个端口:使用
netstat
或类似工具,看看它在什么时候会被占用;一步一步地。可能是特定的VM实例,也可能是与Docker或php fpm相关的;或者可能是您的自定义设置等。另外,我不知道您在那里使用的是什么虚拟机……这个lsof命令有助于指出由brew服务启动的php fpm。我不能杀死-9只它们,而有了苏多它们会重新繁殖。不知道他们是从哪里来的,也许是安装了贴身男仆。我卸载了。谢谢你,伙计,这么多,我敢说是你残余地救了我,这个问题在互联网上似乎没有太多讨论。我对docker也有类似的问题,尽管这里似乎也缺少全局主机xdebug ip的docker配置,或者配置了连接回选项,这两个选项都可能阻止该功能FantomX1 17分钟前删除
sudo kill 110