Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 打开输出缓冲会在随机页面上创建404个错误_Php_Wordpress_Apache_Http Status Code 404_Output Buffering - Fatal编程技术网

Php 打开输出缓冲会在随机页面上创建404个错误

Php 打开输出缓冲会在随机页面上创建404个错误,php,wordpress,apache,http-status-code-404,output-buffering,Php,Wordpress,Apache,Http Status Code 404,Output Buffering,我一直在用php玩output\u buffering(由phpinfo()确认),我刚刚发现,打开它后,我的页面上会随机出现404个错误,但页面内容加载良好,一切看起来都正常 这只发生在我的生产现场。PHP5.5.35,Apache/2.4.18(Unix)。我不知道404是从哪里发来的。有没有人知道可能会发生什么,或者我可以在我的服务器上搜索什么来修复它 以下是我的响应标题,以防出现任何相关情况: Cache-Control:s-maxage=10 Cache-Control:no-cach

我一直在用php玩
output\u buffering
(由
phpinfo()
确认),我刚刚发现,打开它后,我的页面上会随机出现404个错误,但页面内容加载良好,一切看起来都正常

这只发生在我的生产现场。PHP5.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头是有原因的。有什么想法吗?

我认为,在某些情况下,不管输出缓冲是开还是关,代码都会发出404;但当输出缓冲关闭时,无法设置标头,因为它已被写入,并生成如下警告:

警告:无法修改标题信息-标题已由发送 (输出从/file.php:20开始)在/file.php的第100行


因此,只有在打开输出缓冲时,您才能看到404,这使您能够在将缓冲写入输出之前的任何时间点设置标题。

从技术上讲,拥有响应代码为404的页面并具有(可能有用的)内容是可以的(i)您能告诉我们预期结果是什么吗…404或200(ii)你能确认一下这种行为是随机的还是可预测的吗?我估计是200,而这种行为是…奇怪的。我有时会看到页面出现404错误,而硬刷新什么也不做——错误会回来。然后我会在第二天早上回来,每一个不工作的页面都会返回200状态。所以我猜是不可预测的,但不是从一秒到下一秒。奇怪。无论如何,请检查PHP错误日志中的“无法修改标头”或类似内容。发布您发现的任何错误。这是可能的,但我收到该错误的唯一次数是当我最近发布的Wordpress小部件尝试设置缓存控制头时。我无法想象Wordpress为什么会发送404,以及它从代码中的哪一点产生。你有什么建议吗?设置一个错误处理程序来捕捉警告,看看是否是这种情况,如果有像我建议你的消息那样的警告,消息将有文件名和行号。也许你可以将所有警告发送到日志文件,我肯定会不断收到“无法修改标题信息”错误,但它引用了wordpress functions.php文件来设置nocache头。我想你是对的,这里有东西发送了404,这更像是一个Wordpress问题,而不是一个输出缓冲问题。