ヘッダー情報を変更できない問題の解決策 (php)
関数の実行時に、エラー アドレスが最初に処理されて Cookie に書き込まれ、ユーザーが直接ジャンプできるようにする統合エラー プロンプト関数を作成しました。このページはログイン後に実行される予定でしたが、サーバーでテストしたところ、ローカルでは発生しないエラーが表示されたことが判明しました: 警告: ヘッダー情報を変更できません - ヘッダーはすでに送信されています...
このステートメントは明らかに setcookie が原因です。オンラインで調べたところ、次のような説明が見つかりました:
1. setcookie の呼び出しの記述は < の前に置く必要があります。 ;html> タグ
2. setcookie を呼び出す前に echo を使用しないでください
3. Web ページがリロードされるまで、Cookie はプログラムに表示されません
4. setcookie 関数は、データが送信される前に送信する必要がありますブラウザへの出力
5....
上記の制限により、setcookie() 関数を実行すると、「インデックスが未定義」、「ヘッダー情報を変更できない - ヘッダーはすでに送信されている」などの問題が発生することがよくあります。 「...など」という問題を解決するには、Cookie を生成する前にブラウザへのデータ出力を遅らせる必要があります。そのため、先頭に ob_start(); 関数を追加します。プログラムの。これで解決します。 ob_start() を追加したい場合、プログラムを作成した後にこれを変更するのは少し気が滅入ります。このエラーが表示されたことを知ったとき、なぜ私のローカル コンピュータではこのエラーが表示されなかったのか疑問に思いました。問題は、PHP.ini の設定が異なると思っていましたが、それは間違っていると思います。それらはほぼ同じです...
次に続く文を見てください。これは、次のことを意味します。 setcookie の前に別の場所に出力があるということです。そこで、出力の開始に続くファイルを見つけました。最初の行が空白であることがわかり、その後、 解決しました!
解決策 2:
この問題をオンラインで解決するほとんどの方法は同じですが、今日また遭遇しました そんな疑問。試してみたところ、うまくいくことがわかりました。
php.ini 設定ファイルを見つけて、output_buffering という項目を検索し、その値を off から on に変更して、Apache を再起動すると問題ありません。
追記: SAE で php アプリケーションを作成するときに、jump と setcookie がサポートされていない場合にも、これが発生することがあります。 SAE 開発文書の仕様に従う必要があります。