在PHP中检查内容是否已经发送

5

有没有一种聪明的方法来检查输出是否已经发送到浏览器,并且发送一个头文件会生成PHP_WARNING?

显然,使用输出缓冲区的替代方案是一个选择,但这并不总是可行的。

3个回答

6
您可以使用headers_sent()方法。这是因为在输出任何内容之前,头部将首先被发送。

2

headers_sent() 的表现不佳,有时即使输出已发送(例如通知和警告),它也不能始终返回 TRUE。

作为替代方案,我使用以下代码:

<?php

$obStatus = ob_get_status();

if ($obStatus['buffer_used'] > 0) {
    echo 'Content was sent';
} else {
    echo 'Content was NOT sent';
}

当xdebug生成通知和警告时,这是正确的。 - Thanh Trung

-1

如果你只想隐藏警告,只需关闭错误报告即可:

$old_er = error_reporting(0);

header(...)

error_reporting($old_er);

或者,您可以将 PHP 错误和警告重定向到日志文件中(在生产环境中更可取,我个人认为)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接