0

在贬低我之前,我应该说我已经阅读了以下大部分文章:
https://stackoverflow.com/questions/10293545/strange-error-headers-already-sent-by-output-started-at https://stackoverflow.com/questions/10293545/strange-error-headers-already-sent-by-output-started-at
https:// /stackoverflow.com/questions/1827314/cannot-modify-header-information-headers-already-sent-why-its-happening
“警告:无法修改标头信息 - 标头已发送”错误
CakePHP 应用程序中的标头已发送错误

<?php而且我很确定我在标签之前或末尾没有任何空格。错误说当我进行重定向时输出从第 3 行开始。我也知道在发送标题之前我不能发送任何字符,甚至是空格。我还检查了 display_errors 是否在 PHP 标记之前不产生任何错误。
我有 root 访问权限,所以我在 php.ini 中打开了 output_buffering 以完全读取 output_buffering,但它仍然抵抗。

我有四个文件:

1- config.php(ob_start() 在那里)

<?php
session_start();
// some code here.....
// blah blah blah...
?>

2- header.php(此处包含配置)

<?php 
require_once('./config.php');
if (!isset($_SESSION['user'])) { 
    header('Location:' . BASE_URI . '/index.php');
    exit();
}
?>

3- index.php(据说输出从第 3 行开始header():)

<?php include_once('./includes/header.php'); 
if (isset($_SESSION['karbar'])) {
    header('Location: ./somewhere.php');
    exit();
}
?>

4- footer.php (ob_end_flush() 在 mysqli_close() 之后被调用;)

some code here...
</body>
</html>
<?php if (isset($dbc)) { mysqli_close($dbc); } ?>

这怎么可能发生?还有什么我错过的吗?

4

2 回答 2

1

?>如果它们已经在最后一行,请删除所有关闭,它们不是必需的,并且很可能导致您的问题

于 2012-05-24T11:27:10.960 回答
0

检查您的文件中是否没有字节顺序标记(BOM,有时称为 Unicode 签名)。字节顺序标记是文件开头的三个字节,对您不可见,但在执行 php 标签中的代码之前由 PHP 发送。

于 2012-05-24T11:40:23.577 回答