搜索

首页  >  问答  >  正文

警告:无法修改头部信息 - 头部已经在/some/file.php的第12行开始发送输出,位于/some/file.php的第23行

<p>要理解为什么头部必须在输出之前发送,需要查看典型的HTTP响应。PHP脚本主要生成HTML内容,同时也会向Web服务器传递一组HTTP/CGI头部。当您将带有数据库或PHP站点的网站托管在服务器上时,就会出现此错误。首先,您需要进入您的托管网站,找到.htaccess文件,在其中添加以下命令(php_flag output_buffering on),这样您的问题将得到解决。</p>
P粉164942791P粉164942791485 天前477

全部回复(1)我来回复

  • P粉439804514

    P粉4398045142023-07-31 09:13:23

    以下是您可以排除故障并解决此问题的方法:

    检查指定的行:警告信息显示输出始于/some/file.php的第12行,并且您在第23行尝试修改头部信息。转到这些行,并确保在第23行的header()函数调用之前没有任何空格、echo、print、HTML或其他输出。

    删除任何前导空格:如果在当前文件之前包含或需要任何PHP文件(例如使用include或require),请确保这些文件在开头的<?php标记之前没有任何前导空格。PHP标记之外的空格被视为输出,可能会导致此警告。

    避免使用关闭的PHP标记:在仅包含PHP代码(没有HTML)的PHP文件中,通常建议省略文件末尾的关闭PHP标记(?>)。这样可以确保在关闭标记后没有意外的空格或字符,以避免触发输出。

    使用输出缓冲:如果在header()调用之前有一些无法避免的输出(例如由于库依赖或条件语句),您可以使用输出缓冲来捕获输出并防止其立即发送到浏览器。在PHP脚本的开头使用ob_start()开始输出缓冲,在header()调用之前使用ob_end_flush()或ob_end_clean()结束输出缓冲。

    使用输出缓冲的示例:


    <?php 
    ob_start(); // Start output buffering
    // Code that generates output (if any)
    // Now, set the headers
    header('Location: new_page.php');
    exit();
    ob_end_flush(); // Send the output to the browser
    ?>

    回复
    0
  • 取消回复