Php 一步一步:如何对连接到客户端IDE的Xdebug进行故障排除

Php 一步一步:如何对连接到客户端IDE的Xdebug进行故障排除,php,ide,network-programming,xdebug,Php,Ide,Network Programming,Xdebug,背景 将Xdebug与PHP、KomodoIDE和EclipsePDT结合使用 Xdebug已安装在服务器上,并且工作正常。这一点得到了确认,因为当将Xdebug代码命令插入服务器上的PHP文件时,其工作方式与预期相同 问题 连接到客户端工作站不起作用,很难确定原因,因为它在多个IDE中失败 问题 如果您知道Xdebug已经安装并在服务器上工作,但是客户端没有连接,那么最好有一个分步检查表来对这种情况进行故障排除 有人能帮我补充一下,做一个全面的故障排除清单吗 具体来说,是否有任何简单的方法来确

背景

将Xdebug与PHP、KomodoIDE和EclipsePDT结合使用


Xdebug已安装在服务器上,并且工作正常。这一点得到了确认,因为当将Xdebug代码命令插入服务器上的PHP文件时,其工作方式与预期相同

问题

连接到客户端工作站不起作用,很难确定原因,因为它在多个IDE中失败

问题

如果您知道Xdebug已经安装并在服务器上工作,但是客户端没有连接,那么最好有一个分步检查表来对这种情况进行故障排除

有人能帮我补充一下,做一个全面的故障排除清单吗

具体来说,是否有任何简单的方法来确保网络流量到达客户机,并且以IDE期望的方式正确格式化数据

  • SSH连接到web主机并尝试连接到客户端:

    • 主机能到达客户端吗?(ping-c5 xxx.xxx.xxx.xxx)
    • 主机可以到达端口9000吗?(nmap-p 9000 xxx.xxx.xxx.xxx)
    • 如果以上两种方法都成功,那么输出应该是什么
    • 如果以上两项都失败,下一步的故障排除步骤是什么
  • 验证客户端上基于软件的防火墙的设置

  • 验证linux主机上iptables的设置
  • 验证硬件防火墙b/t客户端和主机
目标


我们的目标是找到一种解决方案,客户机上的人员至少可以确认某个东西正在到达客户机,而无需确定IDE是否是问题所在,因为IDE是另一个可能会带来问题的复杂级别。

这是我绝对希望包含在Xdebug文档中的内容。我认为最好让很多人在这方面进行合作,因此我在xdebug.org github repository()中创建了一个文件来收集技巧。请随意分叉和伸展


在Xdebug方面,在即将发布的版本(2.2)中,它已经在Xdebug.remote_日志文件中转储了一些额外的诊断信息,例如它是否尝试连接以及连接是否被接受。

您可以使用该实用程序来确定客户端是否可以接收Xdebug连接,如您在:

在开始脚本之前,您需要告诉您的客户 可以接收调试连接,请参阅的文档 具体的客户就如何做到这一点。使用捆绑客户端 只需在编译和安装后启动它。你可以从 正在运行“调试客户端”。如果要使用GDB命令集进行调试 在脚本中,请确保使用与Xdebug捆绑在一起的debugclient 1.3因为与Xdebug 2捆绑在一起的仅适用于DBGp命令集。 当debugclient启动时,它将显示以下信息和 然后等待调试服务器启动连接:

建立连接后,将显示调试服务器的输出:

连接
.
进一步参考:。
不幸的是,debugclient实用程序仅以源代码形式提供,因此您必须自己构建可执行文件;这可以在Linux(请参阅)和Windows(使用Visual Studio-请参阅)上完成。

XAMPP在
XAMPP/php/debugclient.exe

中包含一个编译版本,Netbeans有一个非常全面的文档,其中还介绍了如何解决此类问题:


Windows用户禁用防火墙,然后重试。 如果可行,允许Java(TM)平台SE二进制文件通过防火墙,然后再次启用它。 它会很好用的


感谢您提供的命令,它们在调试时非常有用。

请小心远程调试会话的防火墙。我通过使用telnet检查9000端口状态来诊断我的问题,并发现防火墙的预防措施。

这是我绝对希望包含在Xdebug文档中的内容。我认为最好是让许多人在这方面进行合作,因此我在xdebug.org github repository()中创建了一个文件来收集提示。您提到的
xdebug
之所以安装,是因为命令可以工作。我的直觉是xdebug只为PHPCLI启用,而不是为apache启用。。。你能证实这一点吗?相关问题:更多相关问题:“这一点得到了确认,因为当插入服务器上的PHP文件时,Xdebug代码命令可以按预期工作。”你能详细介绍一下吗?“它已经在它的Xdebug.remote_日志文件中转储了一些额外的诊断信息”我试过了,它根本没有记录任何东西。在PHP7.2.5上,似乎不可能将Netbeans与xdebug连接起来,而且在任何日志文件中都没有一条提示它失败的原因。我甚至试过Netbeans 11.1。我总是听到“等待连接”
Xdebug Simple DBGp client (0.10.0)
Copyright 2002-2007 by Derick Rethans.
- libedit support: enabled
Waiting for debug server to connect.
Connect
<?xml version="1.0" encoding="iso-8859-1"?>
<init xmlns="urn:debugger_protocol_v1"
      xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
      fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php"
      language="PHP"
      protocol_version="1.0"
      appid="13202"
      idekey="derick">
  <engine version="2.0.0RC4-dev"><![CDATA[Xdebug]]></engine>
  <author><![CDATA[Derick Rethans]]></author>
  <url><![CDATA[http://xdebug.org]]></url>
  <copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright>
</init>
(cmd)