0

サーバーログには、非常に頻繁にエラーが表示されます

PHP 警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - 7 行目の /public_html/include/query.php で既に送信されたヘッダー (/public_html/templates/meta.php:294 で開始された出力)

明らかなようですが、出力が早く開始されました...しかし

エラーは時々しか発生せず、おそらく `session_start()' が if ステートメント内にあるため、再現できません。

これがquery.phpの始まりです

<?php
//  we are including here so that we can check user logged in or not on each and everypage  
if(!isset($_SESSION))
{
    //To make the session work across multiple domains.
    session_set_cookie_params(0, '/', '.mydomain.com');
    session_start();        
}

どこでも query.php が meta.php の前に含まれる

meta.php はほとんどが html と js で、php ブロックはほとんどなく、294 行目はいくつかの js 関数の途中にあります。

しかし、私が最も興味をそそられるのは、これら 2 つのファイルをまったく含まない要求に対してもこのエラーが発生することです。

例えば

アクセスログより

66.249.72.33 - - [19/Aug/2013:22:44:30 +0100] "GET /robots.txt HTTP/1.1" 404 7592 "-" "Mozilla/5.0 (互換性あり; Googlebot/2.​​1; + http: // /www.google.com/bot.html )"

66.249.72.33 - - [19/Aug/2013:22:44:30 +0100] "GET /content_files/SPIKES%20protocol.pdf HTTP/1.1" 200 215267 "-" "Mozilla/5.0 (互換性あり; Googlebot/2.​​1; + http://www.google.com/bot.html )"

およびエラーログ

[2013 年 8 月 19 日月曜日 22:44:30] [エラー] [クライアント 66.249.72.33:44269] AH01215: PHP 警告: session_start() [function.session-start]: セッション Cookie を送信できません - ヘッダーは既に送信されています (出力開始at /public_html/templates/meta.php:294) /public_html/include/query.php の 7 行目

[2013 年 8 月 19 日月曜日 22:44:30] [エラー] [クライアント 66.249.72.33:44269] AH01215: PHP 警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (出力開始at /public_html/templates/meta.php:294) /public_html/include/query.php の 7 行目

22:44:30 でわかるように、Google ボットは最初に robots.txt に対して 2 つのリクエストを作成し、robots.txt がないため 404 を受け取りました。

どちらの場合も、PHP コードは関与していませんが、これらのリクエストに対して PHP の警告が表示されました。

これらは、これらの前後の google bot からの他のアクセス ログではありません。

コードの一般的な構造は次のようになります

<?php
if(isset($_GET['url1'])){$url1 = $_GET['url1'];}else {$url1 = "";}
if(isset($_GET['url2'])){$url2 = $_GET['url2'];}else {$url2 = "";}
require_once('include/query.php');
require_once('include/auth.php');

/* some php code */
?>

<?php include 'templates/meta.php'; ?>

//html

ただし、指定された例のように、query.php または meta.php をまったく使用しないリクエストに対してもエラーが生成されます。

4

3 に答える 3

2

通常、「headers already sent」エラーは実際には空白エラーであることがわかります。?>これらすべてのページで共有されているファイルをチェックして、終了タグの後に余分な改行やスペースがあるかどうかを確認してください。いずれにせよパーサーによって破棄されるため、通常、ファイルの最後に PHP の終了タグを使用しないようにしています。

于 2013-08-19T22:59:05.603 に答える
0

headerHeaders already send エラーは主に、リダイレクトやその他のものに使用される関数の前にエコーまたはその他の出力ステートメントが発生しているときに発生します。

于 2013-08-19T23:00:58.067 に答える