【问题标题】:Do PHP source files need to exist locally AND remotely when using XDebug remote debugging in eclipse?在eclipse中使用XDebug远程调试时,PHP源文件是否需要本地和远程存在?
【发布时间】:2013-12-17 16:08:45
【问题描述】:

我真的对使用 Eclipse 进行 XDebug 远程调试感到困惑。

我使用 Windows(带有 eclipse 和所有爵士乐)进行开发,但我想在与生产环境相同的环境中测试我的代码。

我一直在修补 XDebug 远程调试以支持这一点。我已经在远程机器上正确配置了 XDebug 并确保端口已打开。但真正让我困惑的是——我机器上的源文件是否也需要存在于运行 PHP 和 XDebug 的远程服务器上?现在我的本地开发机器上没有任何 PHP 可执行文件,因此无法在其上运行脚本。

谢谢

【问题讨论】:

    标签: php eclipse apache2 debian xdebug


    【解决方案1】:

    是的,服务器和客户端上需要存在相同的文件集。

    服务器上的文件是在调试会话期间实际运行的文件。

    当调试器在断点处停止时,Eclipse 将向您显示客户端上的文件。服务器将告诉 Eclipse 它停止在文件 Y 的第 X 行,Eclipse 将显示 local 文件集中的文件 Y 的第 X 行。所以如果本地文件和远程文件不一样,你会调试错东西,会很混乱。

    请注意,如果您不能在客户端上运行 PHP 也没关系。客户端文件没有被执行,只是显示在调试会话中。

    如果您对本地文件进行任何编辑,则需要将它们与服务器重新同步。有几种方法可以做到这一点,其中一些内置在 Eclipse 中,例如在 RSE 插件中。我更喜欢使用Unison,或者将版本控制提交回服务器。

    【讨论】:

      【解决方案2】:

      XDebug 可以以多种不同的方式使用,但是是的,通常在本地和远程都有源文件。我没有使用过 Eclipse,但通常在此配置中,IDE 会在您“运行”项目时执行文件上传,以确保服务器具有您在本地编辑的代码。

      我更喜欢文件仅存在于服务器上但安装在本地(通过 SFTP 或 SMB)的设置。每次以这种方式运行项目时都不需要上传文件,但是设置路径映射需要做一些额外的工作,这样当服务器上的 XDebug 报告“/var/www/foo 的第 10 行”时,您的本地 IDE 会理解这意味着“~/MyProject/foo 的第 10 行”。

      如果不知道您的 Eclipse 项目和服务器是如何设置的,我无法更具体。

      此外,您可能希望查看 NetBeans(免费)或 PHPStorm(不是免费,但更好)进行 PHP 开发。我从同事那里听说 Eclipse 与 XDebug 一起使用会变得不稳定(他们使用的是 Windows)。我在使用 NetBeans 或 PHPStorm 的 Linux 上从来没有遇到过同样的问题,尽管我在运行 NetBeans 的 Mac 上也遇到过类似的问题。

      【讨论】:

      • 但是设置路径映射需要做一些额外的工作,因此当服务器上的 XDebug 报告“/var/www/foo 的第 10 行”时,您的本地 IDE 会理解这意味着“~/MyProject 的第 10 行” /富”。 >> 能否请您通过截图或其他内容更详细地说明这一点。
      猜你喜欢
      • 2012-01-23
      • 2021-05-11
      • 2013-07-13
      • 2011-06-19
      • 2012-04-06
      • 1970-01-01
      • 2011-01-11
      • 2014-01-16
      • 2011-08-31
      相关资源
      最近更新 更多