要避免在 PHP 中发送 HTTP 头部,您可以采取以下措施:
- 输出前检查 HTTP 头部是否已发送:
if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } else { echo 'Headers already sent'; }
-
避免在输出任何内容之前调用
header()
函数。确保所有输出(包括空格、换行符和 PHP 标签)都在调用header()
函数之前完成。 -
如果您的脚本输出任何内容(例如错误消息或调试信息),请确保在调用
header()
函数之前删除所有输出。您可以使用ob_start()
和ob_clean()
函数来实现:
ob_start(); // 开始缓冲区 // 输出内容 $output = ob_get_clean(); // 获取缓冲区内容并清除缓冲区 if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); echo $output; } else { echo 'Headers already sent'; }
- 如果您的脚本是从另一个脚本包含的,请确保在包含之前检查 HTTP 头部是否已发送。如果已发送,则不包含该脚本。
请注意,一旦 HTTP 头部发送,就无法撤销。因此,务必确保在调用 header()
函数之前完成所有输出。