Php 远程服务器未连接的Xdebug
我希望使用不同计算机的团队能够在远程服务器上调试PHP,但我很难让Xdebug在NetBeans 7.0.1中工作。我试过很多在线提示,但都没有用 作为记录,我已在运行WampServer的Windows 7计算机上成功地本地安装了Xdebug。因此,只要我将项目属性->运行配置->运行方式属性设置为本地网站,我就可以在NetBeans中使用断点调试PHP。然而,如上所述,我的目标是在远程网站上调试NetBeans 我的服务器是Ubuntu 11.04机器。我已使用的输出将正确的二进制文件放入机器。我已经修改了我能找到的所有Php 远程服务器未连接的Xdebug,php,netbeans,xdebug,Php,Netbeans,Xdebug,我希望使用不同计算机的团队能够在远程服务器上调试PHP,但我很难让Xdebug在NetBeans 7.0.1中工作。我试过很多在线提示,但都没有用 作为记录,我已在运行WampServer的Windows 7计算机上成功地本地安装了Xdebug。因此,只要我将项目属性->运行配置->运行方式属性设置为本地网站,我就可以在NetBeans中使用断点调试PHP。然而,如上所述,我的目标是在远程网站上调试NetBeans 我的服务器是Ubuntu 11.04机器。我已使用的输出将正确的二进制文件放入机
php.ini
文件(在php5/apache2
和php5/cli
目录中),包括以下几行:
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
如果我查看phpinfo.php
网页,它会显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans
因此,Xdebug似乎安装正确。尽管如此,当我尝试在NetBeans中调试时,仍会收到无休止的状态栏消息等待连接(NetBeans xdebug)。当我点击停止按钮时,在X秒内未检测到xdebug的连接。原因可能是xdebug未安装或配置不正确
也许我把本地设置和服务器设置搞混了?所说的xdebug.remote_host
应该设置为运行NetBeans的机器的IP,但我希望团队能够使用具有不同IP地址的机器进行调试。端口9000可能有问题,但我已检查它是否被阻塞
任何能够澄清这一点的帮助都将不胜感激 运行PHP(和XDebug)的服务器需要能够连接到您的工作站/桌面
因此,您需要相应地设置服务器,告诉它连接到特定的IP地址(
xdebug.remote\u host
)或自动“连接回”(xdebug.remote\u connect\u back
)。不过,后者有一些安全隐患。这些都是概述。您启动哪个页面扩展以开始调试?我记得我发疯了,在XDebug的所有设置都很好的地方度过了不眠之夜。问题是我不是用.PHP
启动的,而是用.HTML
启动的
如果正在调试,请尝试使用
.PHP
文件启动调试。关键指令如下:
xdebug.remote_connect_back = On
这允许web服务器连接到要求调试会话的任何计算机。这样,您就不必硬编码IP地址,并且能够共享Xdebug。该指令在早期版本中不存在,并且在教程和文档中经常被省略
您还需要验证每个客户端计算机是否接受到端口9000的传入连接(xdebug.remote\u port
)。这包括配置防火墙和确保调试器客户端已启动并正在运行,您需要设置:
xdebug.remote_host=192.168.1.104
192.168.1.104
是客户端的ip,在这里您可以使用IDE感谢服务器端php.ini上的xdebug.remote\u connect\u back=On
此外,我还必须使用Chrome才能在PhpStorm中启动调试会话。对于我来说,
xdebug.remote\u connect\u back=On
不起作用。
我所做的是在我的客户机上设置ssh端口转发
远程计算机上的xdebug配置:
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
客户端计算机上的转发端口:
ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.host.ip]
必须允许远程计算机上的shell访问 就我而言,这些命令帮助了我:
xdebug.remote_enable = On
xdebug.remote_autostart=1
注意:由于'xdebug.remote\u autostart=1',即使GET/POST/COOKIE变量不存在,调试器也会工作。我在尝试配置docker时遇到过几次相同的问题,在多次挠头之后,我意识到这是解决问题的方法。所以我决定把这个放在这里作为我未来自我的答案 Dockerfile在大多数情况下都会将以下语句添加到php.ini中:
xdebug.remote_connect_back = on
这会使一切看起来正常,但不知何故,PHP风暴并没有捕获任何调试连接。用下面的代码替换上面的代码可以立即修复我的问题
xdebug.remote_connect_back = 0
xdebug.remote_host = host.docker.internal
当然,在此之后,您仍然需要运行:
$docker向下组合
$docker compose构建
和
$docker compose up-d
注意:在Linux上,host.docker.internal
将不起作用。您可以改用172.17.0.1
。(注意它不是127.0.0.1,我一直认为这是因为我有点选错了)Xdebug 3远程调试升级指南
总结:
所需的PHP配置更改/添加:
- 删除
(xdebug.
remote\u enable
default\u enable
profiler\u enable
自动跟踪
)覆盖率\u enable
- 添加
或使用xdebug.mode=debug
develop
coverage
profile
- 添加
xdebug.start\u请求=yes
被xdebug.remote\u autostart
替换为xdebug.mode=debug
xdebug.start\u请求=yes
被xdebug.remote\u host
xdebug.client\u host
被xdebug.remote_port
替换,或者在IDE设置中使用新的默认值(详见下文)xdebug.client_port
=您的IDE主机x.y.z.a
=您在IDE中配置的密钥myKey
- 在上述配置中将
设置为remote_port
(xdebug的新默认端口)或将9003
设置为xdebug.client_port
,以保持旧的默认端口9000
- 布拉德对xdebug 3的回答非常正确;谢谢就我而言,我以Php7.3.13赢得了10分,
Netbeans 8.2和IIS 10(eindia.com是众多网站之一)(浏览
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.idekey=myKey
xdebug.client_host=x.y.z.a
xdebug.remote_handler=dbgp
[xDebug]
zend_extension = "C:\Program Files\PHP\v7.3\ext\php_xdebug-3.0.2-7.3-vc15-nts-x86_64.dll"
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler="dbgp"
xdebug.client_host="eindia.com"
;xdebug.remote_host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.client_port=9003
;xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"