警告:无法修改标题信息-标题已经发送(输出开始于/some/file.php:12)在/some/file. php第23行[关闭]

pbossiut  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(128)

已关闭。此问题需要更多focused。它目前不接受回答。
**希望改进此问题?**更新问题,使其仅针对editing this post的一个问题。

3天前关闭。
Improve this question
要理解为什么必须在输出之前发送头,有必要看一下典型的HTTP响应。PHP脚本主要生成HTML内容,但也向Web服务器传递一组HTTP/CGI头:当您使用数据库或PHP网站托管您的网站时会发生此错误首先您必须转到您的托管网站转到.htaccess文件在这里添加此命令(php_flag output_buffering on)您的问题将得到解决。

bt1cpqcv

bt1cpqcv1#

以下是如何排除故障并解决此问题:
检查指定的行:警告消息表明输出从/some/file. php中的第12行开始,并且您试图修改第23行的标题。转到这些行,并确保在第23行的header()函数调用之前没有生成空格、echo、print、HTML或任何其他输出。
删除所有前导空格:如果在当前文件之前包含或需要任何PHP文件(例如,使用include或require),请确保这些文件在打开<?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
?>

字符串

相关问题