有没有一种聪明的方法来检查输出是否已经发送到浏览器,并且发送一个头文件会生成PHP_WARNING?
显然,使用输出缓冲区的替代方案是一个选择,但这并不总是可行的。
有没有一种聪明的方法来检查输出是否已经发送到浏览器,并且发送一个头文件会生成PHP_WARNING?
显然,使用输出缓冲区的替代方案是一个选择,但这并不总是可行的。
headers_sent() 的表现不佳,有时即使输出已发送(例如通知和警告),它也不能始终返回 TRUE。
作为替代方案,我使用以下代码:
<?php
$obStatus = ob_get_status();
if ($obStatus['buffer_used'] > 0) {
echo 'Content was sent';
} else {
echo 'Content was NOT sent';
}
如果你只想隐藏警告,只需关闭错误报告即可:
$old_er = error_reporting(0);
header(...)
error_reporting($old_er);
或者,您可以将 PHP 错误和警告重定向到日志文件中(在生产环境中更可取,我个人认为)。