You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用header()函数后出现错误输出,如何解决?

解决header()函数调用报错的问题

问题原因

header() 函数的核心要求是:必须在任何输出(包括空格、换行、HTML标签、echo/print输出)之前调用。一旦脚本有任何内容先输出到浏览器,PHP会自动发送HTTP响应头,此时再调用header()就会触发"headers already sent"类的错误,这就是你看到大量错误文本的原因。

常见的触发场景包括:

  • PHP文件开头的<?php标签前有空格、换行符,或者编辑器给文件加了UTF-8 BOM头(这个是隐形的,肉眼看不到)
  • 脚本在调用header()之前有echo、print等输出语句
  • 引入的其他文件有提前输出的内容

解决方法

  1. 清理文件开头的隐形输出
    检查你的PHP文件,确保<?php是文件的第一个字符,前面没有任何空格、换行或其他字符。同时在编辑器设置里关闭"添加UTF-8 BOM"的选项(比如VS Code可搜索"files.encoding",设置为"utf8"而非"utf8bom")。

  2. 使用输出缓冲规避顺序问题
    如果脚本逻辑确实需要在header()之前执行一些可能产生输出的操作,可以开启PHP的输出缓冲功能。在脚本最顶部添加ob_start(),所有输出会先被缓冲起来,直到你主动发送或者脚本结束,这样就不会干扰header()的发送:

    <?php
    ob_start();
    // 这里可以写其他逻辑,哪怕有临时输出也不会影响header
    header("Content-Type: text/plain");
    echo "Hello";
    ob_end_flush(); // 手动发送缓冲的内容
    ?>
    
  3. 检查所有引入文件
    如果你的脚本引入了其他PHP文件,也要确保那些文件没有提前输出内容,包括文件开头/结尾的空白。

修正后的最简代码

确保文件无BOM、开头无空白,直接使用以下代码即可正常运行:

<?php
header("Content-Type: text/plain");
echo "Hello";
?>

内容的提问来源于stack exchange,提问作者webdevlearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:23:23