Php 远程服务器未连接的Xdebug

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,但我很难让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
    xdebug.client_port
    替换,或者在IDE设置中使用新的默认值(详见下文)
新配置示例 在哪里

  • x.y.z.a
    =您的IDE主机
  • myKey
    =您在IDE中配置的密钥
所需的IDE配置更改/添加:
  • 在上述配置中将
    remote_port
    设置为
    9003
    (xdebug的新默认端口)或将
    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"