运行script.php时出错:端口9000正忙

我在phpstorm设置了php.iniDebug config 。 试图在phpstorm中debuggingphp脚本输出事件日志:

 "Error running script.php: Port 9000 is busy" 

php.ini结束:

  [XDebug] zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so" xdebug.remote_enable=1 xdebug.remote_port="9000" (the default port is 9000) xdebug.profiler_enable=1 xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_dir="/etc/php5/xdebug/profiler_output_dir" 

pStorm中的debugging端口也设置为9000. netstat -na输出:

 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 

如果我设置到其他端口怎么办? 例如设置为10001似乎做的工作。 或者只是如何使其正常工作。 我不确定我是否了解xDebug是如何工作的。 它像在运行Debug("script.php")(Shift+F9)在phpstorm与文件中设置断点?

有人有想法吗?

编辑:

来自: http : //xdebug.org/docs/remote

 xdebug.remote_port Type: integer, Default value: 9000 The port to which Xdebug tries to connect on the remote host. Port 9000 is the default for both the client and the bundled debugclient. As many clients use this port number, it is best to leave this setting unchanged. 

如果我换9000以外的端口怎么办? 也许超过50K的东西。

这个在9000端口上运行的进程可能是PhpStorm本身。

检查Jacob提到的当前使用的端口(在Windows cmd上: netstat -a -b ): 在这里输入图像描述

如果PhpStorm.exe列在9000以下,您只需在设置>构建,执行,部署> 调试器 中将 内置服务器的端口更改为例如63342 (这是我的团队PhpStorm安装的默认设置)。

基本上有一些其他的过程是使用9000,而不是使用它,通常为我另一个IDE在同一时间运行

Windows修复 – >

  1. 查找过程使用9000

打开cmd.exe

netstat -o

 C:\Users\AMC75>netstat -o Active Connections Proto Local Address Foreign Address State PID TCP 10.6.176.132:27018 livlt0124661:55375 ESTABLISHED 11104 TCP 10.6.176.132:49271 chilynfe01:5061 ESTABLISHED 10120 TCP 10.6.176.132:49379 hhefs14:netbios-ssn ESTABLISHED 4 TCP 10.6.176.132:49383 chifs08:netbios-ssn ESTABLISHED 4 TCP 10.6.176.132:51034 157.55.56.143:40002 ESTABLISHED 11104 TCP 10.6.176.132:51038 db3msgr6011007:https ESTABLISHED 11104 TCP 10.6.176.132:51049 wb-in-f125:5222 ESTABLISHED 10860 TCP 10.6.176.132:51282 wpapp020:50124 ESTABLISHED 848 TCP 10.6.176.132:53014 ec2-107-23-104-135:https ESTABLISHED 10860 TCP 10.6.176.132:53015 ec2-107-23-104-135:https ESTABLISHED 10860 TCP 10.6.176.132:54774 157.56.116.205:12350 ESTABLISHED 11104 TCP 10.6.176.132:54822 a23-198-48-60:https CLOSE_WAIT 7500 TCP 10.6.176.132:55166 upmon070:3306 ESTABLISHED 2652 TCP 10.6.176.132:55261 lhr08s03-in-f9:http ESTABLISHED 10860 TCP 10.6.176.132:55570 upmon070:3306 ESTABLISHED 10980 ..... BLAH BLAH BLAH 
  1. 杀死进程

taskkill / PID XXXX

  1. 利润…?,你现在应该能够运行调试器

注意未来的自我:

在我的情况下,这是由于使用虚拟机端口转发(虚拟盒子上的流浪者)造成的。 我以为转发9000是一个好主意。

解决方案:连接到标准Virtual Box的VM IP 10.166.53.1 在这里输入图像描述

我的/etc/php5/cgi/conf.d/xdebug.ini内容

 ; xdebug configuration ; xdebug.remote_host = localhost zend_extension = /usr/lib/php5/20121212/xdebug.so xdebug.remote_connect_back = 1 xdebug.remote_enable = 1 xdebug.remote_port = 9000 xdebug.remote_handler = dbgp xdebug.remote_mode = req xdebug.idekey = "PHPSTORM" xdebug.remote_log = /var/log/xdebug.log 

无法识别lsof和netstat在9000端口上运行的进程的pid。 临时最简单的phpstorm只是改变phpstormphp.ini的端口,而不是实际使用的东西(比如10k )。

GNU / Linux解决方案(因为Windows之外有生命):

遵循@aqm的解决方案

首先使用端口9000查找进程。

 netstat -tulpn | grep :9000 

你会得到这样的输出:

 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3993/programname 

你需要PID来杀死这个命令的进程:

 kill -9 3993 

注意 :也许你的进程没有显示他的PID,有可能你运行的PHP-FPM使用默认端口9000,在这种情况下,你可以改变PHP-FPM端口或PHP Xdebug端口。


解决方案1 ​​ – 更改您的Xdebug配置:

编辑/etc/php/php.ini

搜索xdebug.remote_port=9000并替换您的新端口


解决方案2 – 更改PHP-FPM端口:

编辑/etc/php/php-fpm.conf

listen = 127.0.0.1:9000搜索行,用你的新端口替换9000

然后重新加载服务:

 systemctl reload php-fpm 

然后编辑你的nginx或apache配置来告诉这个新的端口,在/etc/httpd/httpd.conf/etc/nginx/nginx.conf搜索127.0.0.1:9000 ,并用你的新端口替换它

重新加载你的服务器:

 systemctl reload nginx 

要么

 systemctl reload httpd 

我希望它有助于:),

合十。

首先,即使是一个小题目,我认为它有帮助。 我为每个docker-composer项目使用不同的网络接口。 这样我可以在/ etc / hosts中映射一个永久域名而不用担心,在这个例子中是192.168.33.102 project.domain.local

这是一个yaml设置的例子:

 nginx: build: docker-images/nginx links: - "php" ports: - "192.168.33.102:80:80" php: build: docker-images/php/7.0.1-fpm ports: - "192.168.33.102:10000:9000" 

PHP容器监听9001php7.0-fpm9000xdebug ,并不暴露任何端口。

PhpStorm调试端口设置为默认值9000,服务器主机设置为192.168.33.102 (或来自/ etc / hosts的值,即project.domain.local )。

从php容器的端口可以看出,一个不同的映射端口被设置为10000,可以是任何其他不同的值,而不是9000,从PhpStorm中清除繁忙的错误。

另外,在docker-compose上绑定这个端口是很重要的。 它没有映射港口没有工作,并没有与9000:9000的工作

希望它能帮助别人!

PS:这里是xdebug.ini:

 zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_connect_back=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_autostart=true