PHP HEADERS_SENT 错误通常是由于在向客户端发送 HTTP 响应头之前,已经输出了任何 HTML、XML 或其他类型的数据。HTTP 响应头必须在发送任何内容之前发送,因此,当 PHP 检测到已经发送了响应头时,它会抛出一个 HEADERS_SENT 错误。
以下是一些可能导致 HEADERS_SENT 错误的原因:
echo "Hello, World!";
header("Content-Type: text/html");
ob_start();
echo "Hello, World!";
header("Content-Type: text/html");
ob_end_flush();
$handle = fopen("http://example.com", "r");
header("Content-Type: text/html");
要解决 HEADERS_SENT 错误,需要确保在调用 header() 函数之前不输出任何内容。如果需要在输出内容后更改响应头,可以使用输出控制函数(如 ob_clean() 和 ob_end_clean())来清除输出缓冲区中的内容,然后再发送响应头。