-1

何時間も修正できないエラーに直面しています。localhost ではすべて問題ないようです。しかし、私のライブ ドメインでは、セッション エラーが発生しています。エラーについてのアイデアを得るのに役立つ情報を次に示します。

  • Facebook PHP SDK を使用しています
  • localhost とライブ ドメインの両方で WordPress の最新バージョンを使用しています
  • ローカルホストとライブドメインの両方で同じファイル、アプリケーションの正確なコピーを使用しています
  • localhost では、エラーは返されません。
  • ライブドメインでは、次のエラーが発生します。

    警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (出力は /home/vantaget/public_html/wordpress/sofashare/wp-content/themes/sofashare/header.php:6 で開始されました) ) /home/vantaget/public_html/wordpress/sofashare/wp-content/themes/sofashare/lib/facebook/facebook.php の 37 行目

これが私がfacebook sdkを実装した方法です。

まず、これを functions.php ファイルに入れてエラーを取得します。

error_reporting(E_ALL ^ E_NOTICE);

私はライブラリを含めます:

require_once TEMPLATEPATH.'/lib/facebook/facebook.php';

そして、関数ファイルでは、これは関数です:

function sofa_include($lib) {
    global $sofa, $user;
    if ($lib == 'facebook') {

    // new facebook call
    $facebook = new Facebook(array(
        'appId'  => $sofa['fbappid'],
        'secret' => $sofa['fbappsecret'],
    ));

    // get facebook user
    $user = $facebook->getUser();

    // get user profile
    if ($user) {
      try {
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }

?>

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
    FB.init({
    appId: '<?php echo $facebook->getAppID() ?>',
            cookie: true,
            xfbml: true,
            oauth: true
    });
    FB.Event.subscribe('auth.login', function(response) {

    });
    FB.Event.subscribe('auth.logout', function(response) {

    });
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>

<?php
    }
}

今私のheader.phpファイルで、Facebook SDKを含めるためにこれを行います

<?php sofa_include('facebook'); ?>

エラーレポートをALLに設定して、localhostですべて正常に動作します。しかし、私のライブ ドメインでは、常に session_start ヘッダー送信エラーが発生します。何が間違っている可能性がありますか?

4

1 に答える 1

0

セッションが開始する前にFacebookのJavaScriptコードを出力している可能性があり、これが問題の原因になります。おそらく、ローカルサーバーでデフォルトなどで出力バッファリングが有効になっていて、本番環境では有効になっていない可能性があります

于 2012-05-26T10:37:09.530 に答える