【问题标题】:header("location") causes [500] internal server error?header("location") 导致 [500] 内部服务器错误?
【发布时间】:2011-01-22 04:19:00
【问题描述】:

我不知道是什么导致了这个错误。我的 Apache 日志没有在访问日志或有关页面的错误日志中记录任何错误,但不知何故,每当我取消注释 header() 行时,我都会收到 500 内部服务器错误。在调用header() 之前输出内容时,它不可能来自PHP 的致命错误,那不会导致500 吗?

header("Location: /offices/page-".ceil($cache->size() / 15));

我测试了$cache->size(),它返回 22,所以它应该在字符串末尾附加一个 2 并重定向。我确实在header() 之前调用了ob_start(),但我尝试在它之前调用ob_end_clean(),但它仍然什么也没做......

我什至尝试将header("Location: /offices"); 放在文件的开头,但它仍然给我一个 500。

【问题讨论】:

  • 原因可能是 - 您需要在 location : header("location :/

标签: php apache redirect


【解决方案1】:

另一个原因可能是 - 您需要在 location 之后删除 空格

header("location :
header("location:

如果这不是您的问题,请尝试检查 php & apache 错误日志

【讨论】:

  • 那是从字面上隐藏在我的视线之外的。谢谢。
【解决方案2】:

脚本在您调用 header() 后继续执行。你需要在它后面加上exit;。不过,这不应该导致 500 错误。

编辑:显然这有效 - 这意味着您的问题可能在页面下方的一些相关代码中?

【讨论】:

  • 如果取消注释 header() 是唯一的其他更改并且修复了它,那么 weird
【解决方案3】:

尝试使用完整的 URL:

header("Location: http://{$_SERVER['HTTP_HOST']}/offices/page-".ceil($cache->size() / 15));

【讨论】:

  • 我尝试输入 header("Location: http://www.example.com"); 仍然是 500 错误。
  • @animuson 好吧,这很奇怪。 :)
  • 不管是谁说的,把exit紧跟在后面,似乎奏效了。我在header 调用之后立即添加了exit,它现在重定向得很好......
  • 您是否可能在此之后输出任何其他标题?
  • 不,我使用的原始header 调用已接近脚本执行的结尾。在脚本的后期发送另一个header 呼叫是不可能的。所有(如果有的话)都在脚本执行开始时发送。
【解决方案4】:

我也遇到了同样的事情。在显示器上反复敲打我的头后,它不是标题(“位置:myPage.php”);断线 - 断线的是 myPage.php!尝试重定向到另一个页面。我希望我能节省别人的时间

【讨论】:

    【解决方案5】:

    我确实遇到了同样的问题,但似乎我写了 header("Location : page.php") 而不是 header("Location: page.php");。是的,一个空格就不同了!

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 2012-03-29
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多