如何配置PhpStorm远程Xdebug路径映射

6

我已经设置了一个运行我的应用程序的Docker机器。在这个Docker机器中,启用了xdebug,并使用以下xdebug.ini设置。

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_host=10.5.0.1

我的本地机器IP地址是10.5.0.1。

当我尝试在命令行上运行我的应用程序时,它会连接到PhpStorm调试器。但由于没有路径映射,它停在脚本的第一行,断点不起作用。断点光标不可见,我无法通过 F8 键跟踪代码。

此外,在调试器->变量窗口中必须显示某种路径映射错误,但它没有显示任何错误。

如何修复这个问题?

5个回答

8

设置 > 语言和框架 > PHP > 服务器 添加你的服务器,并添加路径映射! 例如,C:\Sites\mysite 映射到远程 /var/www/mysite 或类似路径。


我不知道为什么,但它不起作用。当我从命令行调用它时,它不起作用,但如果我通过远程主机的浏览器调用相同的文件,则工作正常。 - fobus
在命令行中,使用最新的xdebug,您可以在运行命令时设置环境变量,例如 XDEBUG_MODE=debug ./some/command,这对您应该有用。 - delboy1978uk

6

我可以解决这个问题,PhpStorm无法处理未配置serverName的情况。

操作步骤:

1. 设置环境变量:

export XDEBUG_CONFIG="idekey=PHPSTORM"
export PHP_IDE_CONFIG="serverName=web_server_cli"

2. 为该服务器设置路径映射:

前往 设置 > 语言与框架 > PHP,并创建一个主机名为 web_server_cli 的服务器。


1
按照@Benjamin的建议去做是最简单的方法,特别是如果你从IDE内部调用这些脚本。但是,如果你想要调试一些随机脚本(例如由cron调用;通过远程控制台手动启动等),那么这就是正确的方法。 - LazyOne
1
如果我能为这个问题给你50个声望分,我一定会这么做的。我为了让它工作的噩梦让我感到抓狂。我仍然不知道为什么没有这个东西就无法解析路径,但至少现在已经解决了。 - Shardj

5
您需要在“设置>语言和框架>PHP>Servers”中设置一个“服务器”配置,它将服务器上的路径映射到您项目中的路径。
通常,您会在“主机”中输入一个URL,并将“端口”设置为HTTP端口,例如80或443。对于CLI脚本,这里要输入的信息将基于您连接到运行CLI脚本的服务器的连接。例如,如果您通过标准SSH端口(22)SSH到192.168.42.42,则应输入“Host: 192.168.42.42”,并将“Port: 22”设置为端口。
要找出需要设置哪些详细信息,请进入“设置>语言和框架>PHP>Debug”,启用“当未指定路径映射时强制在第一行中断”,并确保“忽略未注册的服务器配置的外部连接”未被选中。然后单击工具栏中的“侦听调试连接”,运行您的脚本;应该会弹出一个对话框,显示它正在尝试匹配的“服务器名称:”和“服务器端口:”,以及确认远程文件路径。在该对话框中单击“忽略”,设置服务器映射,然后重试,您应该能够获得正确的调试会话。

1
根据您对@delboy1978uk答案的评论,看起来您想要调试一个从命令行运行的PHP脚本。为了有效地进行调试,您需要执行以下操作,而不是通过“PHP Remote Application”运行配置进行调试(这将使PHPStorm假定您是通过浏览器运行):
1. 创建一个“PHP Script”运行配置,并提供运行CLI应用程序所需的参数。 2. 设置远程CLI PHP解释器(我通过IDEA运行,因此我的位置在“设置>语言和框架>PHP>CLI解释器”,您的情况可能有所不同),并提供用于连接到vagrant箱的SSH凭据。 3. 在调试模式下通过运行配置启动脚本。
如果一切设置正确,您的CLI脚本将启动并正确使用断点。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接