【问题标题】:In XDebug for Eclipse, how are remote paths mapped to local paths?在 XDebug for Eclipse 中,远程路径如何映射到本地路径?
【发布时间】:2015-01-21 03:07:17
【问题描述】:

虽然我现在意识到让 Eclipse 在断点处停止的诀窍是,当 PHP 脚本从 ajax/curl 的 POST 和 GET 请求执行时,要确保在所有请求中都设置了 XDEBUG_START_SESSION 变量希望调试器注意,这似乎仅在 Web 服务器上的所有路径都是正常的相对路径时才有效。

但是,如果您在网络服务器上碰巧有一些别名路径,例如通过 httpd Alias 指令,XDebug 将无法将您工作区中的文件路径与它们在站点 URL 中的路径关联起来。

我有以下目录设置:

以下是网络服务器的设置方式:

ServerName test.local
DocumentRoot "C:\Users\me\projects\testproject\start\here"
Alias /post "C:\Users\me\projects\testproject\post"

<Directory "C:\Users\me\projects\testproject">
    Require all granted
</Directory>

我认为这就是路径映射选项卡的用途,可在Debug Configurations -&gt; Server -&gt; Configure... -&gt; Path Mapping 中找到。在我所见的任何地方,我都被告知将Path on server 设置为网络服务器上目录或文件的文件系统路径,并将Local path 设置为其在文件系统或工作区中的路径。我还尝试将 Path on server 设置为我想映射到 Local path 的站点 URL 路径,但两种配置都不会导致 POSTed PHP 脚本中的一行中断。

我打开了 XDebug 的日志记录,以比较它正确停止的断点的消息,因为它位于调试器开始的文件中,以及通过 POST 请求执行的脚本中的断点,不幸的是不是停止。如果/post 路径与DocumentRoot 处的帖子目录对应,它将在此文件中停止,但如果帖子目录在其他地方并且站点URL 中的“假”/post 路径与其别名,则不会。

在我的XDebug log file 中,index.php 中的第 28 行有几个日志条目,该文件正在正确中断。 message.php 中的第 3 行也有一个条目,并且 URL 编码的路径看起来正确,但我没有看到相同类型的条目。

如何将 Eclipse 配置为知道服务器上的 /post 意味着工作空间中的 /My Project/post

【问题讨论】:

  • 我难倒 PHP 社区了吗? :-) 肯定有人能够在整个 PHP 应用程序中设置断点,该应用程序喜欢到处使用 curl/ajax 并使用别名 Web 服务器路径...

标签: php eclipse apache curl xdebug


【解决方案1】:

哦,天哪...这只是将 Accept remote session (JIT) 设置为 localhost,在我的情况下,或者只是 off 以外的任何内容:

很高兴确认这确实有效,但我仍然对为什么它不在一个更复杂的项目中感到困惑。运气好的话,我会分享更多...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多