在使用Eclipse进行XDebug远程调试时,PHP源文件需要同时存在于本地和远程吗?

7

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

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

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

谢谢

2个回答

3
是的,服务器和客户端需要存在相同的文件集。
在调试会话期间,实际运行的是服务器上的文件。
当调试器在断点处停止时,客户端上的文件是Eclipse将向您显示的内容。服务器将告诉Eclipse它在文件Y的第X行停止了,而Eclipse将从本地文件集中显示文件Y的第X行。因此,如果本地文件与远程文件不同,则您将调试错误的内容,这将导致混乱。
请注意,如果您无法在客户端上运行PHP也没有关系。客户端文件不会被执行,只会在调试会话中显示。
如果您对本地文件进行任何编辑,则需要将其与服务器重新同步。有几种方法可以做到这一点,在Eclipse中内置了一些方法,例如RSE插件。我更喜欢使用Unison或版本控制提交回服务器。

0

XDebug 可以以几种不同的方式使用,但是通常情况下本地和远程都需要有源文件。我没有使用过 Eclipse,但是在这种配置中,当你“运行”项目时,IDE 通常会执行文件上传操作,以确保服务器上有你正在本地编辑的代码。

我更喜欢只在服务器上存在文件,但是通过 SFTP 或 SMB 挂载到本地。这样做就不需要每次运行项目时上传文件,但是需要额外的工作来设置路径映射,以便当服务器上的 XDebug 报告“/var/www/foo 的第 10 行”时,你的本地 IDE 理解为“~/MyProject/foo 的第 10 行”。

如果不知道你的 Eclipse 项目和服务器如何设置,我无法提供更具体的信息。

此外,你可能想要尝试 NetBeans(免费)或 PHPStorm(收费但更好)进行 PHP 开发。我从同事那里听说 Eclipse 在使用 XDebug 时可能会出现问题(他们使用的是 Windows)。在 Linux 上使用 NetBeans 或 PHPStorm 时,我从未遇到过相同的问题,但在运行 NetBeans 的 Mac 上也遇到了类似的问题。


但是需要额外的工作设置路径映射,这样当服务器上的XDebug报告“/var/www/foo的第10行”时,您的本地IDE就能理解这意味着“~/MyProject/foo的第10行”。 >> 您能否用截图或其他方式更详细地说明一下? - jit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接