これが私のファイルです。リダイレクトさせたいのですが、何も起こりません。何が起こっているかを確認するために、ヘッダー部分の前にエコーを追加しました。
エラーをスローすることも、index.phpにリダイレクトすることもありません。なにが問題ですか?出力バッファリングのオン/オフを切り替えましたが、何もリダイレクトしません。私に何ができる?
<?
error_reporting(E_ALL);
echo 'This is an error';
header("Location: login.php");
die();
?>
ありがとう
実際のテスト環境にxDebugがインストールされていることを思い出し、グーグルで調べたところ、次のサイトを見つけました。 http://bugs.xdebug.org/view.php?id=532
そこで、最新バージョンのxDebugをダウンロードし、それに応じてphp.iniを新しいファイルに合わせて変更し、すべてが魅力的に機能するようにします。ヘッダーが送信されています-再実行が完了し、エラーが表示されます。
皆さん、助けてくれてありがとう!
PHPドキュメント から:
header()
は、実際の出力を送信する前に、通常のHTMLタグ、ファイル内の空白行、またはPHPから呼び出す必要があります。
そして、あなたの場合、header()
の前にecho
を使用しています。
短いタグが有効になっていますか?長いタグで試してください<?php
:
<?php
error_reporting(E_ALL);
header("Location: login.php");
die();
?>
Display_errorsは有効になっていますか?
@ Gumbo-確かです!
まあ、それは確かではありません。なぜなら
何が起こっているかを確認するために、ヘッダー部分の前にエコーを追加しました。
display_errorsを有効にしている場合は、少なくとも_turned output buffering on
_のときにエラーが表示されます。
そのため、まず、エラーメッセージが表示されることを確認してください。
未定義の変数を出力するだけで、
_error_reporting(E_ALL);
echo $undef9306;
_
あなたはそれを見ないだろうと確信しています。したがって、エラーの表示をオンにする必要があります
次に、サーバー側でheaders_sent()
関数を使用して、ヘッダーが送信されたかどうかを確認できます。クライアント側でHTTPスニファーを使用して、何かが送信されたかどうかを確認します
そして、ファイルのBOMを確認します。