0

昨日、自分のページで文法の間違いを見つけたので、FTP 経由で Web サーバーに接続し、index.php ファイルを編集し (間違いを見つけた場所)、ページの途中にある 1 つの単語を修正してから保存しました。それ。ページを更新すると、ページの上部に次の警告メッセージが表示されました。

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ../index.php:1) in /home/../public_html/../index.php on line 2

わかりました。ヘッダーは既に送信されています。.の前に空白もインクルードも何もありませんsession_start()ob_start()function の前に入れましたsession_start()が、同じ警告メッセージが表示されます。

session_start()皮肉なことに、私は関数を編集も変更もしていません。そこには何も入れていません。ページの途中で 1 文字だけ修正したのに、この警告メッセージが表示されました。

どうすればいいのかわからない。誰でも私を助けることができますか?提案してください!

ありがとうございました!

4

3 に答える 3

4

出力が送信される原因となるバイト順マークがある可能性があります。PHPはBOMを認識せず、BOMを出力として扱い、ブラウザに送信されます。

この問題を解決するには、ファイルをBOMなしでutf-8として保存します。

于 2012-07-02T09:01:24.450 に答える
1

FTPクライアントPCはWindowsPCであり、PHPファイルはUTF-8として保存されていますか?編集者は、PHPが理解できないBOMを前に付けた可能性があります。これは、16進エディターを使用して最初の3バイトを削除するか、Notepad++などのBOMを付加しないエディターでファイルを再度保存することで削除できます。

于 2012-07-02T09:02:05.183 に答える
1

明らかに、index.phpを呼び出す前に、1行目でブラウザに出力が送信されていsession_startます。index.phpスペースなどの1行目を確認してください。

最も可能性の高い理由は、index.phpWindowsテキストエディタで編集したことです。このエディタは、何らかの理由で、ファイルがUTF-8エンコーディングであり、最初にBOMを配置していると考えていました。PHPは特別な方法でBOMを処理しないため、これらのバイトはブラウザに直接送られ、ヘッダーが終了します。

于 2012-07-02T09:02:20.370 に答える