使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? (使用 PhpStorm 和 XAMPP)
With an HTML form, how can I start debugging the action PHP script with proper GET/POST data? (using PhpStorm and XAMPP)
我使用 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->服务器,点击“+”号添加新服务器。填写服务器信息。
端口为 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 键,如下所示:
在 PhpStorm 中,我在代码中我想要的地方放置了一个断点。我单击按钮让 PhpStorm 侦听 PHP 调试连接。然后我使用启动器按钮从我想要的页面启动代码(Chrome 在我的计算机上是 Alt+F2)。
代码 运行 正常,我可以从一个页面导航到另一个页面。当在特定页面上,代码遇到 PHP 断点时,代码被挂起,我可以使用 PhpStorm 的调试器逐行执行它。由于我填写了进入此页面的表格,因此我得到了 GET/POST 数据。
我想它不像 PHP HTTP 请求那么直接,但它有效。
我使用 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->服务器,点击“+”号添加新服务器。填写服务器信息。
第 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 键,如下所示:
在 PhpStorm 中,我在代码中我想要的地方放置了一个断点。我单击按钮让 PhpStorm 侦听 PHP 调试连接。然后我使用启动器按钮从我想要的页面启动代码(Chrome 在我的计算机上是 Alt+F2)。
代码 运行 正常,我可以从一个页面导航到另一个页面。当在特定页面上,代码遇到 PHP 断点时,代码被挂起,我可以使用 PhpStorm 的调试器逐行执行它。由于我填写了进入此页面的表格,因此我得到了 GET/POST 数据。
我想它不像 PHP HTTP 请求那么直接,但它有效。