【发布时间】: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