使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? 使用 PhpStorm 和 XAMPP 第 1 步:在 PhpStorm 上创建服务器第 2 步:正常启动 XAMPP第 3 步:在启动 PhpStorm 之前,添加一个环境变量第 4 步:在相同的命令提示符下,启动 PhpStorm第 5 步:启动调试会话

问题描述

我使用 PHPStorm 2021.1.3 作为 IDE,将 XAMPP 作为 PHP7.4 引擎。我已经安装了 Xdebug 2.9.2,它工作正常,因为我可以在特定的 PHP 脚本上启动调试器。

我的问题是我在 PHP 网页中有一个 HTML 表单(我们称之为“mainpage.PHP”,它将数据发送到另一个 PHP 文件(我们称之为“analyze.PHP”)。

问题是,如果我在其他 PHP 文件(“analyze.PHP”)上启动调试器,它不会获取 GET/POST 数据,因为我根本没有使用该表单。有没有办法在启动调试器时传递 GET/POST 数据?

我查看了运行配置,但他们似乎只提到了 PHP 选项,而不是 GET/POST 数据。

我尝试使用 HTTP 请求,但据我所知,我见过的唯一示例使用了实际的 Web 主机和生产环境。我目前只有这个 XAMPP 开发环境。我的 PHP 文件不在 XAMPP 的 www 文件夹中,因为到目前为止,PHPStorm 在需要时将文件复制到正确的位置似乎没有问题。

知道我应该在哪里寻找吗?

解决方法

好的,感谢@waterloomatt,我设法找到了解决方法。在我的案例中,问题的关键是这个 PhpStorm 错误:https://youtrack.jetbrains.com/issue/WI-54542 因此,一旦这个错误得到解决,这个答案可能就无关紧要了。

这是 Linux 上的解决方案:

第 1 步:在 PhpStorm 上创建服务器。

在文件->设置->PHP->服务器中,点击“+”号添加一个新的服务器。填写服务器信息。 How to create a server on PhpStorm 端口是 63342,这是 PhpStorm 用于运行代码的端口。请注意,我将此服务器命名为“localhost63342”。这个细节很重要。

第 2 步:正常启动 XAMPP。

像往常一样启动 XAMPP。问题在于 PhpStorm,而不是 XAMPP。

第 3 步:在启动 PhpStorm 之前,添加一个环境变量

打开命令提示符,然后运行以下命令:

export PHP_IDE_CONFIG=serverName=localhost63342

注意服务器名称,与我们在 PhpStorm 中定义的服务器名称相同。

我可以使该环境变量更持久,但由于它是一个即将解决的 PhpStorm 错误,我认为可以。

第 4 步:在相同的命令提示符下,启动 PhpStorm

我们定义了一个环境变量,只要命令提示符保持打开,它就有效。然后我们可以使用此命令提示符启动 PhpStorm。就我而言,使用以下命令:

./$HOME/phpstorm/PhpStorm-203.7148.74/bin/phpstorm.sh

第 5 步:启动调试会话

我的 Chrome 浏览器已经有“Xdebug helper”扩展:https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=en 该扩展已经配置为使用 PHPSTORM IDE 密钥,如下所示:

Xdebug helper configuration

在 PhpStorm 中,我在我的代码中放置了一个我想要的断点。我单击按钮使 PhpStorm 侦听 PHP 调试连接。然后我使用启动器按钮从我想要的页面启动代码(Chrome 在我的电脑上是 Alt+F2)。

代码运行正常,我可以在页面之间导航。当在特定页面上,代码遇到 PHP 断点时,代码被挂起,我可以使用 PhpStorm 的调试器逐行执行它。由于我填写了表格以访问此页面,因此我获得了 GET/POST 数据。

我认为它不像 PHP HTTP 请求那样直接,但它有效。