我一直在php中玩output_buffering(由phpinfo()确认),我发现打开它后,我的页面上会随机出现404个错误,但页面内容加载良好,一切看起来都正常。
这只发生在我的生产现场。PHP5.5.35,阿帕奇/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头背后有一个原因。有什么想法吗?

最佳答案

我认为发生的情况是,在某些情况下,无论输出缓冲是打开还是关闭,您的代码都会发出404;但是,当输出缓冲是关闭时,无法设置头,因为它已经被写入,并生成如下警告:
警告:无法修改标题信息-标题已由发送
(输出从/file.php:20开始)在/file.php的第100行
因此,只有当“输出缓冲”处于启用状态时,您才能看到404,它使您能够在缓冲区写入输出之前的任何时候设置头。

关于php - 打开Output_Buffering会在随机页面上创建404错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48589244/

10-15 17:03