手动断点不适用于XDebug for PHP中的远程VM

时间:2014-08-13 15:58:52

标签: php debugging phpstorm xdebug remote-debugging

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

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

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

我的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是正确的。)

如果我通过将我的VM上的“/ 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

感谢您的任何想法!

2 个答案:

答案 0 :(得分:4)

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

导出PHP_IDE_CONFIG =“serverName = RemotePHP”

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

答案 1 :(得分:0)

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