【发布时间】:2018-02-28 18:31:32
【问题描述】:
我正在远程服务器(Amazon Linux)上调试 PHP,使用我的本地机器(iMac,运行 MAMP Pro)。我可以让 PhpStorm 进入“第一行中断”,并正确地逐步执行,但是当它移动到另一个文件时,它完全是错误的行。它不断地通过并且似乎以这种方式工作,但是在错误的行上,所以我无法真正遵循代码。它实际上比它应该开始的位置提前了大约 20 行。
我正在使用以下方式设置从本地计算机到 Web 服务器的 SSH 隧道:
ssh -g -N -R9000:localhost:9000 SSH_ALIAS
这很棒; PhpStorm 将其拾取并开始调试。
我认为这与路径映射有关。我正在通过访问该站点的 CLI 工具调试命令,并且它的 PHP 文件位于项目 Web 根目录之外的单独根目录中(此 CLI PHP 脚本文件夹和 Web 服务器的文档根目录都在 PhpStorm 中设置为项目根目录)。
PhpStorm 正确映射的第一个文件位于 CLI 工具的根目录中,而我尝试从第一个文件进入的第二个文件位于项目 Web 根目录中。目录结构如下:
/usr/share/[CLI_TOOL_PATH]/[NAME].php - 服务器上第一个文件的路径
/usr/share/[CLI_TOOL_PATH]/[NAME].php - 本地机器上的第一个文件路径
/var/www/html/main/[MODULE_PATH] - 服务器上第二个文件的路径
/var/Webroot/dev_imac/[MODULE_PATH] - 本地机器上的第二个文件路径
我尝试在 PhpStorm 中为 localhost 和端口 9000 设置 PHP 服务器,并将“服务器上的绝对路径”映射到与本地文件相同的路径,并且我尝试过“服务器上的绝对路径”映射到服务器上的实际路径。值得注意的是,CLI 工具的路径在本地机器和服务器上完全相同,而 Web 根目录在两者上不同。
我已经在远程服务器上设置了 PHP,在 php.ini 中有以下内容:
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.idekey="PHPSTORM"
xdebug.remote_handler=dbgp
希望有人可以提供帮助!在此先感谢:)
【问题讨论】:
-
肯定是路径映射问题。您需要更改的唯一设置是路径映射设置(我认为在 PHPStorm 的服务器设置下)。
-
我是这么想的!但是我应该如何改变它们?我已经尝试了上面列出的东西......还不能让它工作。我做错了什么?!
-
您能否编辑您的帖子以包含您的目录结构在本地项目和服务器上的示例?
-
如果您还没有看过这篇文章,请看看这篇文章——可能会有所帮助:confluence.jetbrains.com/display/PhpStorm/…
-
已编辑以包含目录结构@mkasberg