为什么header()导致内部服务器错误?

问题描述:

我无法弄清楚可能会导致此错误的原因。我的Apache日志没有记录关于该页面的访问日志或错误日志中的任何错误,但不管怎样,当我取消注释header()行时,我得到一个500内部服务器错误。在调用header()之前输出内容时,它不会来自PHP的致命错误,那不会导致500会不会呢?为什么header()导致内部服务器错误?

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

我测试$cache->size()和它的返回22,所以它应该在2追加到字符串的结尾和重定向。我确实有ob_start()header()之前打电话但是我打过电话前右它ob_end_clean(),它仍然什么也没做......

我甚至试图把header("Location: /offices");在文件的最开始,它仍然给了我一个500

该脚本将继续你的头()调用后执行。你需要在它之后立即放置exit;。但这不应该导致500错误。

编辑:显然这个工作 - 意味着你的问题可能是在页面后面的一些相关的代码?

+1

添加'exit'解决了问题... – animuson 2010-03-01 05:33:37

+1

如果取消注释header()是唯一的其他更改,并且这固定它然后*怪异*。 – jasonbar 2010-03-01 05:35:31

尝试使用完全形成的网址:

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

我试着把'header(“Location:http://www.example.com”);'仍然是500错误。 – animuson 2010-03-01 05:28:43

+0

@animuson好吧,那很奇怪。 :) – deceze 2010-03-01 05:31:23

+0

无论是那个说出口后立即出口,似乎已经奏效。我把'exit'放在'header'后面,它现在重定向就好了... – animuson 2010-03-01 05:32:34

我有同样的事情发生。在监视器上反复敲打我的头后,它不是标题(“Location:myPage.php”);这是破碎的行 - 这是myPage.php破碎了!尝试重定向到另一个页面。我希望我省去别人的时间