代码之家  ›  专栏  ›  技术社区  ›  DavidN

在XDebug for PHP中,手动断点无法在远程VM上工作

  •  1
  • DavidN  · 技术社区  · 12 年前

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

    我在Windows机器上编码,PHPStorm在LinuxVM上自动将文件与我的开发环境同步。我在端口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是正确的。)

    如果我通过将虚拟机上的“/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 回复  |  直到 12 年前
        1
  •  4
  •   DavidN    12 年前

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

    export PHP_IDE_CONFIG=“serverName=远程PHP”

    其中RemotePHP是在“设置”中设置的服务器的名称>PHP>在调试配置中选择的服务器和。很可能,如果没有这一点,它就不知道如何将传入的断点映射到正确的文件。

        2
  •  0
  •   Cybercartel    12 年前

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

    推荐文章