1

このサイト(user:polopolo,pass:samara) にログインしようとすると、空白のページが表示されます。ヘッダーの送信とphp.ini ファイルのouput_bufferingに問題があることはわかっています。別のホストでも同じ問題が発生しましたが、 output_buffering= Onを変更すると問題が修正されました。現在のホストでは機能しませんが、なぜでしょうか? 助言がありますか?

-現在のサイトのphpinfo 。


編集:問題は解決しました。コードをリバース エンジニアリングしたところ、php の終了タグの後、ヘッダーを送信する前に追加のスペースが見つかりました。コードは私が書いたものではなく、システム全体がすでに別のサーバーで動作していたため、このオプションを本能的に無視しました。しかし、私の同僚は、私が気付いていなかったいくつかの変更を行いました...教訓は、チームワークが重要であり、誰にもあなたの代わりに考えさせてはならないということです。それでも、エラーを表示するためにすべてを試した後、特に「ヘッダーを変更できません」が正しく表示されなかったのはなぜなのか、私には謎です。エラーを表示したり、ログに記録したりなど、あなたがアドバイスしてくれたすべてのことを行いました...とにかくありがとう。

4

3 に答える 3

4

おそらく、ログイン直後にたどり着いたページがリダイレクトを行っているのでしょう。

リダイレクトを実行するには、応答とともに HTTP ヘッダーを出力する必要があります。問題は、PHP がドキュメントの本文の出力を既に開始している場合、本文の開始時にヘッダーが終了するため、ヘッダーを出力できないことです。

出力バッファリングは、出力バッファがフラッシュされる (または PHP が終了する) まで、PHP がドキュメントの本文のどの部分も出力しないようにします。これにより、いつでもヘッダーを出力できます。

ここで、出力バッファリングをオンにして、自分のサイト/サーバーの問題が修正されたが、別のサイト/サーバーの問題が修正されなかった場合、それは実際には同じ問題ではないことを明確に示しています。別の問題が発生しています。

PHP エラーをログに記録する必要があるため、PHP エラー ログを確認してください。制限された開発者専用サイト (そうでない場合) でこれを表示している場合 (その場合にのみ)、PHP 構成で display_errors をオンにすると、ページがレンダリングされるときにエラーが表示されます。これは一般に、一般に公開されているサーバーでは安全でない設定と見なされます。これは、攻撃者がエラー メッセージで個人情報が明らかになるようなエラーを発生させようとする可能性があるためです。

于 2009-04-22T04:49:51.143 に答える
1

私は専門家ではなく、出力バッファリングが何に関係するのか理解できません。コードにエラーがあるのではないでしょうか。

次の内容の.htaccessファイルを作成できますか。

php_flag display_errors on
php_value error_reporting 30719

そのサイトのルートフォルダに配置してから、もう一度ログインして、出力エラーがあるかどうかを確認しますか?

于 2009-04-21T18:19:29.503 に答える
0

プロジェクトの作業中にも同じ問題が発生しました。php.ini 構成ファイルで output_buffering = 4096 を設定して後で修正し、localhost では問題なく動作しましたが、ホスト サーバーに配置すると、このエラーが再び発生しました。ホスト サーバーで独自の php.ini 構成ファイルを使用する方法がわかりません。どんな提案も大歓迎です...

于 2009-09-09T05:29:26.770 に答える