関数の実行では、ユーザーがログイン後に実行するページに直接ジャンプできるように、最初にエラーアドレスを処理してCookieに書き込みました。しかし、テスト時に気づきました。サーバー上では、ローカルでは発生しないエラーが表示されました: 警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています...
このようなステートメントを確認すると、この原因が setcookie によって引き起こされていることが明らかです。インターネットでは次の説明があります: Cookie 自体 使用には次のような制限があります:
1. setcookie を呼び出す記述は タグの前に置く必要があります
2. setcookie を呼び出す前に Echo を使用することはできません
3 . Cookie は、Web ページがリロードされるまで使用されません。プログラム内に表示されます
4. データがブラウザに出力される前に、setcookie 関数を送信する必要があります
5. ……
上記の制限に基づいて、 setcookie() 関数を使用すると、「インデックスが未定義です」、「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」などの問題が発生することがあります。「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」というエラーを解決する方法は次のとおりです。したがって、Cookie を生成する前にブラウザへのデータ出力を遅らせるには、この関数を先頭に追加します。これで解決します。 ob_start() を追加したい場合、プログラムを作成した後にこれを変更するのは少し気が滅入ります。このエラーが表示されたことを知ったとき、なぜ私のローカル コンピュータではこのエラーが表示されなかったのか疑問に思いました。 PHP.ini の設定が違うと思っていましたが、違うようです。ほぼ同じです...
そこで、次の文を見てください。「output starting at....」という出力があることを意味します。 setcookie の前の別の場所で、次の出力が始まり、最初の行が空白であることがわかり、その後、解決策 2:
オンラインで見つかったこの問題を解決する方法はほとんど同じです。今日、またそのような問題に遭遇しました。試してみたところ、うまくいくことがわかりました。
php.ini 設定ファイルを見つけて、output_buffering という項目を検索し、その値を off から on に変更し、Apache を再起動すれば問題ありません。
上記は、ヘッダー情報 (php) を変更できない問題の解決策を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。