【发布时间】:2021-08-26 23:25:56
【问题描述】:
我使用 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 在需要时将文件复制到正确的位置似乎没有问题。
知道我应该去哪里找吗?
【问题讨论】:
-
1) PHP Request 类型的运行/调试配置允许使用 POST(执行和调试)。 2) 您可以使用 HTTP 客户端 和 debug it 编写您的有效负载 3) 或者您可以从 Postman 发送此类请求:stackoverflow.com/a/19147935/783119(此时 PhpStorm 必须等待调试连接)跨度>
-
这可能是一个愚蠢的问题,但是为什么不在表单处理程序页面 analyze.php 上放置断点,然后提交表单呢?所有的 post/get 数据都会出现。
-
@waterloomatt :它被认为是两个独立的 PHP 脚本。 PhpStrom/Xdebug 看不到两个网页之间的链接,因此不考虑第二页 AFAIK 中的断点。
-
没关系。 PHPStorm 应该看到表单提交(post/get)并捕获它。您应该能够浏览您的应用程序(链接、表单等),PHPStorm 将捕获所有这些请求。如果这不起作用,那么您的设置可能有问题。您是否使用浏览器扩展来触发调试会话?其中一些扩展要求您告诉它期望哪个方法(get、post、both)以及哪个页面(此页面、下一页等)。前任。 chrome.google.com/webstore/detail/zdebug/…
-
@leftcursor 那么为什么你使用 PhpStorm 的内置非常简单/有限的 web 服务器而不是来自你的 XAMPP 的完整的 Apache?使用正确的 Apache——它总是比任何内置的 Web 服务器更强大/更类似于实际部署的站点。据我了解,您只是不知道如何告诉 PhpStorm 使用自定义 URL 而不是内置 Web 服务器...jetbrains.com/help/phpstorm/…