【发布时间】:2009-04-17 11:59:44
【问题描述】:
有没有一种聪明的方法来检查输出是否已经发送到浏览器并且发送标头会生成 PHP_WARNING?
显然有使用输出缓冲区的替代方法,但这并不总是一种选择。
【问题讨论】:
标签: php http-headers
有没有一种聪明的方法来检查输出是否已经发送到浏览器并且发送标头会生成 PHP_WARNING?
显然有使用输出缓冲区的替代方法,但这并不总是一种选择。
【问题讨论】:
标签: php http-headers
您可以使用 headers_sent() 方法。这是因为在输出任何内容之前,将首先发送标头。
【讨论】:
headers_sent() 做得很差,并且在输出已发送的情况下并不总是返回 TRUE(例如通知和警告)。
作为替代,我使用这个:
<?php
$obStatus = ob_get_status();
if ($obStatus['buffer_used'] > 0) {
echo 'Content was sent';
} else {
echo 'Content was NOT sent';
}
【讨论】:
如果您只想隐藏警告,只需关闭error reporting:
$old_er = error_reporting(0);
header(...)
error_reporting($old_er);
或者,您可以将 PHP 错误和警告重定向到日志文件(这在生产中更可取,IMO)。
【讨论】: