0

私を否定する前に、以下の記事のほとんどを読んだと言いましょう:
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
"警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています" エラー
Headers already sent error in CakePHP app

<?phpそして、タグの前または最後にスペースがないと確信しています。このエラーは、リダイレクトを行うと出力が 3 行目から始まることを示しています。また、ヘッダーを送信する前にスペースを入れても、文字を送信できないことも知っています。PHPタグの前にエラーが発生しないように、display_errorsがオフになっていることも確認しました。
root アクセス権があるので、php.ini で output_buffering をオンにして、output_buffering を完全に読み取るようにしましたが、それでも抵抗します。

私は4つのファイルを持っています:

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 署名とも呼ばれる) がないことを確認します。バイト オーダー マークは、ファイルの先頭にある 3 バイトで、目に見えませんが、php タグ内のコードを実行する前に PHP によって送信されます。

于 2012-05-24T11:40:23.577 に答える