Facebook PHP SDK session_start() 在实时域上出错,但在本地主机上没有错误(在两者上使用相


Facebook PHP SDK session_start() error on live domain, but no error on localhost (using same WordPress environment on both)

我遇到了一个错误,我现在几个小时都无法修复。在本地主机上一切看起来都很好。但是在我的实时域上,我收到会话错误。这里有一些信息可以帮助您了解错误。

  • 我正在使用 Facebook PHP SDK
  • 我在本地主机和实时域上使用WordPress最新版本
  • 我使用相同的文件,本地主机和实时域上的应用程序的精确副本
  • 在本地主机上,不会返回任何错误。
  • 在实时域上,我收到该错误:

    警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出开始于/home/vantaget/public_html/wordpress/sofashare/wp-content/themes/sofashare/header.php:6) 在/home/vantaget/public_html/wordpress/sofashare/sofashare/wp-content/themes/sofashare/lib/facebook/facebook.php 第 37 行

以下是我实现Facebook SDK的方式。

首先,我将其放入我的函数.php文件中以检索错误:

error_reporting(E_ALL ^ E_NOTICE);

我包括库:

require_once模板路径。/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
    }
}

现在在我的标题.php文件中,我这样做是为了包含facebook sdk

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

在本地主机上一切正常,错误报告设置为 ALL。但是在我的实时域上,我总是收到session_start标头发送错误。可能出了什么问题?

很可能

你在会话开始之前输出了Facebook JavaScript代码,这导致了你的问题。也许您的本地服务器默认启用了输出缓冲或其他功能,而生产

没有