【问题标题】:How can I debug redirecting requests in PHP?如何在 PHP 中调试重定向请求?
【发布时间】:2019-08-19 14:32:58
【问题描述】:

我有一个用于 CAD 的 Web 应用程序,并且想要添加单点登录。如果用户没有设置会话令牌,我会将他重定向到其他网站以获取令牌(如果允许的话)。

我有两个源代码,都是用 PHP 编写的。如果可能的话,我什至想调试重定向。

我的重定向如下所示:

header("Location: localhost/SSO/index.php?reURL=localhost/PLM/index.php");

我有一个可用的 PhpStorm 设置,用于使用内部 PHP cli 进行调试。我可以调试我的网站,但在发送标头后,调试就停止了。有没有办法调试重定向?

我的网站和验证位于不同的项目/文件夹中。我试图将两者放在同一个文件夹中,但它并没有改变行为。

【问题讨论】:

  • 你是否也在你重定向的脚本中设置了断点
  • 你是否重定向到同一个本地域,我的意思是如果总是 localhost 或其他什么?您是否也在要重定向的页面上放置断点?如果您有超过 1 个域(指向 127.0.0.1),则应该在两个域上都启用调试
  • @pavelbere:现在我在 localhost 上都有用于测试 localhost/PLM/index.php 是我的应用程序,localhost/SSO/index.php 是令牌。是的,我在他们两个中都设置了断点。我可以单独调试这两个项目中的每一个,并且会遇到断点。
  • 尝试启用 XDebug 日志并检查它们:jetbrains.com/help/phpstorm/…
  • 如果这是您的实际代码(即您忘记了 URL 中的协议前缀),浏览器将重定向到 http://localhost/localhost/SSO/index.php。除非您在 PHP 中实现了 404 Not Found 处理程序,否则从 PHP 的角度来看,这一切都结束了。

标签: php debugging redirect phpstorm


【解决方案1】:

试试

if (posix_isatty(STDOUT)) {
  echo "No Redirection";
} else {
  echo "Redirection!";
}

多年前为类似问题提供的解决方案。您可以访问以下链接了解更多详情

How can I detect STDOUT redirection in PHP CLI?

【讨论】:

  • 请不要复制内容。如果这是答案,那么最好的方法是将问题作为另一个问题的重复来结束。但我认为你首先误读了这个问题。除了术语“重定向”之外,它们没有任何共同点。这个问题是关于 HTTP(Location 标头和 302 状态码),而你的问题是关于 shell 管道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2018-11-03
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多