我在phpstorm
设置了php.ini
和Debug 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修复 – >
打开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
taskkill / PID XXXX
注意未来的自我:
在我的情况下,这是由于使用虚拟机端口转发(虚拟盒子上的流浪者)造成的。 我以为转发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
只是改变phpstorm
和php.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容器监听9001的php7.0-fpm
和9000的xdebug
,并不暴露任何端口。
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