使用 XDebug 进行 PHP 远程调试

Posted

技术标签:

【中文标题】使用 XDebug 进行 PHP 远程调试【英文标题】:PHP Remote Debugging using XDebug 【发布时间】:2011-06-19 10:19:49 【问题描述】:

我有很多关于如何在远程服务器上使用 xdebug 和 eclipse 调试 php 文件的问题。

我想要实现的是: 我有一个远程服务器(带有 WAMPP(appache(端口 8502)、php、mysql(端口 8501)等)),我想在本地 PC 上使用 Eclipse PDT 调试 php 文件。

我准备了以下东西

已安装 Eclipse PDT(构建 ID: 20100617-1415) 在我的本地 PC 上 在 远程服务器(可在(让 说)111.111.111.111:8502)与 以下配置内 php.ini
[XDebug]
zend_extension = C:\TYPO3_4.4.6\php\ext\php_xdebug-2.1.0-5.3-vc6.dll
xdebug.profiler_output_dir = "C:/xampp/tmp/xdebug"
xdebug.profiler_output_name = "cachegrind.out.%p"
xdebug.profiler_enable = 0
xdebug.profiler_append=0
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=ECLIPSE_DBGP
xdebug.remote_log="C:\TYPO3_4.4.6\tmp\xdebug\xdebug_remote.log"
xdebug.show_exception_trace=0
xdebug.show_local_vars=9
xdebug.show_mem_delta=0
xdebug.trace_format=0

在 Eclipse 中,我将服务器添加到 “窗口 - PHP - PHP 服务器” 与 网址“http://111.111.111.111:8502”和 路径映射 - 服务器上的路径: "C:\TYPO3_4.4.6\htdocs" 和路径 工作区:“/debug_test”(我创建了一个 PHP 项目名为“debug_test”)。

我还将 PHP - Debug 更改为以下内容:

PHP 调试器:XDebug 服务器:111.111.111.111 PHP 可执行文件未定义

接下来我添加了调试配置(PHP网页):

服务器调试器:XDebug PHP 服务器:111.111.111.111 文件:/debug_test/debug.php 在第一行中断:关闭 自动生成:开启

我在远程服务器上的 C:\TYPO3_4.4.6\htdocs\debug_test\ 和我的 PHP 项目(“debug_test”)中创建了文件 debug.php。

如果我现在运行“调试”并选择我的配置文件,则会弹出(在外部浏览器中)带有 URL http://111.111.111.111:8502/debug_test/debug.php?XDEBUG_SESSION_STOP_NO_EXEC=ECLIPSE_DBGP&KEY=129657398681515 的网页,并且该页面(完全)加载为普通页面,但没有办法调试它。即使我切换到 PHP 调试 - 查看并插入任何断点或类似的东西,也没有什么比调试更好的了。

如何才能使用 xdebug 和 eclipse pdt 进行远程调试?

干杯, 芝士

【问题讨论】:

好问题,我也想知道答案 【参考方案1】:

您确定您的 XDebug-Client / PC 可以通过 127.0.0.1 从您的服务器访问吗?

如果我理解正确,您的服务器没有安装在您的 PC 上。 OTOH 然后我想知道您如何设置 ypur XAMPP 系统。 B/c 那么通常你所有的东西都是本地安装的。

浏览器的行为也很重要。如果通过 Eclipse 调用 XDebug-session 后您的站点已完全加载,那么 Eclipse 中的 XDebug-Client 无法访问您的服务器。如果您看到您的浏览器试图加载页面但它停止了,那么您的客户端可以告诉服务器启动一个 XDebug 会话,但您在服务器上的 XDebug 无法连接回来。

您为服务器指定的端口 8502 也有点奇怪,但考虑到相应的配置,可能是正确的。

最好的问候

拉斐尔

编辑:第一次尝试你应该在第一行启用中断

【讨论】:

嗨拉斐尔,感谢您的快速响应!您是否会因为在 XDebug-Config 中将远程主机设置为 127.0.0.1 而导致服务器无法访问我的 PC? XAMPP(实际上是typo3 winstaller附带的wampp)安装在服务器上。可以使用端口 8502 通过 Internet 访问服务器。如果我使用上述调试配置调用调试,浏览器会完全加载站点。是否有可能看到,Eclipse 是否可以访问服务器上的 xdebug-component? Hey Cheesi ... 看,127.0.0.1 与 localhost 相同,例如,如果 apache 将在与 Eclipse 相同的 PC 和操作系统上运行,这将是必需的。在您的情况下,您实际上正在使用远程服务器 127.0.0.1 不能是正确的 IP。我想您可以使用 Putty 或类似的工具登录服务器。然后尝试 netstat -atpn 例如找出您的服务器通过哪个 IP 认识您。因此,在这种情况下,您的服务器无法联系到您。但是鉴于您的症状,您似乎也无法访问服务器。只要没有管理员告诉您这样做,就尝试放弃 8502。最佳

以上是关于使用 XDebug 进行 PHP 远程调试的主要内容,如果未能解决你的问题,请参考以下文章

在远程服务器上的Docker内部进行Xdebug远程调试

PHP远程调试:XDebug无法连接JetBrains php Storm客户端

phpstorm+xdebug 远程调试

使用 PHPStorm 解决 PHPUnit xdebug 远程调试问题

Xdebug文档 远程调试

PHPSTORM2020.1+Xdebug2.9.8远程调试