【问题标题】:Manual breakpoints not working on remote VM in XDebug for PHP手动断点在 XDebug for PHP 中的远程 VM 上不起作用
【发布时间】:2014-10-07 02:11:05
【问题描述】:

我一直在远程 VM 上为 PHP 设置 XDebug,使用 PHPStorm 作为 IDE/客户端。我在网站上看到了很多关于此的问题,但没有关于这种情况...

我在 Windows 机器上编码,PHPStorm 自动将文件与我在 Linux VM 上的开发环境同步。我在端口 9001 上有一条从该 VM 回到我的本地机器的隧道。我正在尝试调试命令行 PHP 脚本,我已经做到了这一点:

  • xdebug_break() 函数有效。
  • 如果选中“Break at first line in PHP scripts”,我可以从头开始逐步执​​行脚本,但是...
  • 手动断点不起作用!

我的 IDE 和 XDebug 实例之间的通信似乎很好,因为只要它来自 xdebug_break() 或脚本的开头(尽管 IDE 不会突出显示当前行),我就可以逐步执行)。

查看 xdebug.remote_log,我看到断点设置在我的本地 Windows 文件而不是服务器上的路径 - 这似乎是个问题...

<- breakpoint_set -i 7 -t line -f file://D:/git/php/php/tests/lookatme.php -n 8

(双php/php是正确的。)

如果我通过将虚拟机上的“/D:/git/php/php/”目录符号链接到实际的 PHP 目录来欺骗它,然后运行 ​​PHP 脚本,它实际上可以工作——但前提是 PHP 从根目录。

据我所知,我在 Settings/PHP/Servers 中的映射是正确的 - 我是否认为只有我的 PHP 存储库的根文件夹需要映射到远程服务器上的对等文件夹?

D:\git\php\php -> /company/mnt/codebase/DEVWEB/php/

我的 xdebug.ini:

xdebug.default_enable=0
xdebug.overload_var_dump=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name="cachegrind.out.%s.%t"
xdebug.remote_enable=On
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_port=9001
xdebug.remote_log=/tmp/xdebug.log

脚本使用环境变量运行:

export XDEBUG_CONFIG="idekey=PHPSTORM"

PHPStorm 中的路径映射:

http://i.imgur.com/Unp2BgG.png

感谢您的任何想法!

【问题讨论】:

  • 最有可能的路径映射不正确请显示Settings | PHP | Servers的截图。
  • 编辑描述添加截图!
  • 9001端口打开了吗?
  • 它是 - 端口 9001 上的通信正常,通过本地机器和 VM 之间的隧道(通过 Putty:R9001 -> localhost:9001)
  • 只是为了 100% 清楚:请注意 xdebug 仅适用于最终/已解决的文件名,因此 /company/mnt/codebase/DEVWEBPHP354/php/ 应该是实际的真实路径并且不包含任何符号链接它。

标签: php debugging phpstorm xdebug remote-debugging


【解决方案1】:

感谢大家的帮助和指点 - 最后我发现我的远程机器上缺少一个环境变量:

导出 PHP_IDE_CONFIG="serverName=RemotePHP"

其中 RemotePHP 是在 Settings > PHP > Servers 中设置并在调试配置中选择的服务器名称。据推测,如果没有这个,它就不知道如何将传入的断点映射到正确的文件。

【讨论】:

  • 你是真正的mvp。这对我有用。您还可以在 /etc/profile.d 中添加一个名为anything.sh 的文件,并将PHP_IDE_CONFIG="serverName=RemotePHP" 放入其中。
【解决方案2】:

我认为您需要映射每个文件。它适用于我的远程服务器。

【讨论】:

  • 无需为 PhpStorm 映射“每个文件”。文件夹的映射将扩展到其中的所有子文件夹和文件。
  • 他只有根映射。 Xdebug 配置有时不合逻辑。
猜你喜欢
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2015-12-02
  • 2017-11-06
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多