无法修改 Header 信息 Header 已发送

Cannot Modify Header Information Headers Already Sent

我知道这个问题已经被问过很多次了,但我看到了很多不同的答案,并且都试过了,none 对我有用。那么让我为您提供我的具体背景,看看您的建议:

我正在 Mac OS X El Capitan 上开发。我正在使用 PHP 版本 5.5.31。 error message

我在 php.ini 文件中打开了输出缓冲。在发送header之前,我已经死死地检查没有白色的space。以下是代码所指的行:

(edit_subject.php:6)

<?php require_once("../includes/session.php");?>
<?php require_once("../includes/db_connection.php");?>
<?php require_once("../includes/functions.php");?>
<?php require_once("../includes/validation_functions.php");?>
<?php find_selected_page();?> 
<?php 
if(!$current_subject){
**redirect_to("manage_content.php")**;
}
?>

(edit_subject.php:38)

$result = mysqli_query($connection, $query);
if ($result && mysqli_affected_rows($connection) >= 0) {
// Success
$_SESSION["message"] = "Subject edited succesfully.";
**redirect_to("Location: manage_content.php");**
} else {
// Failure
$message = "Subject update failed.";
}

(functions.php:3)

<?php
function redirect_to($new_location) {
redirect_to("Location: . $new_location");
exit;
?>

在过去的 48 小时里,我一直在拔头发。我会很感激这里的一些指导。
谢谢, 克里斯

以下行触发警告(functions.php 第 3 行):

redirect_to("Location: . $new_location");

它正在尝试发送 headers,在某些内容已经输出之后(可能是另一个 error/warning,考虑到您的语法已损坏)。检查您的错误日志。

尝试在重定向之前刷新缓冲区。如果已经输出了一些东西并且您尝试通过重定向更改 header 在这种情况下,就会出现问题。

您可以在顶部使用 ob_start(),并在更改 header 之前使用 ob_end_flush() 进行刷新。

注意:刷新缓冲区只会隐藏问题,而不是解决方案。有一些不好的编码习惯,试着找出来。