我在php中使用output_buffering
(由phpinfo()
确认)并且我刚发现在打开它时,我会在我的网页上开始随机出现404错误,但是页面内容加载正常,一切看起来都不错。
这只发生在我的生产网站上。 PHP 5.5.35,Apache / 2.4.18(Unix)。我不知道404从哪里发送。有没有人对我可能发生的事情有什么想法,或者我可以在我的服务器上搜索什么来修复它?
这些是我的回复标题,如果相关的话:
Cache-Control:s-maxage=10
Cache-Control:no-cache, must-revalidate, max-age=0
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:13021
Content-Type:text/html; charset=UTF-8
Date:Fri, 02 Feb 2018 18:31:59 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Keep-Alive:timeout=5, max=96
Server:Apache
Strict-Transport-Security:max-age=31536000; includeSubDomains; preload
Vary:Accept-Encoding
X-Powered-By:PHP/5.5.35
编辑: 我发现这个问题只发生在我正在加载的网页上,以及最近的帖子'来自Wordpress实例。我删除这个小小部件并不是一个真正的选择,但我认为这是设置404标头背后的原因。有什么想法吗?
答案 0 :(得分:1)
我认为发生的事情是,在某些情况下,无论输出缓冲是打开还是关闭,您的代码都会发出404s;但是当输出缓冲 off 时,标题无法设置,因为它已经被编写生成类似这样的警告:
警告:无法修改标头信息 - 已发送的标头 (输出从/file.php:20开始)在第100行的/file.php中
因此,当输出缓冲 on 时,您只能看到404,这使您可以在将缓冲区写入输出之前的任何时刻设置标题。