在贬低我之前,我应该说我已经阅读了以下大部分文章:
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); } ?>
这怎么可能发生?还有什么我错过的吗?