live domain上的Facebook PHP SDK会话_start()错误,但localhost上没有错误(在两者上使用相同的WordPress环境)

live domain上的Facebook PHP SDK会话_start()错误,但localhost上没有错误(在两者上使用相同的WordPress环境),php,facebook,Php,Facebook,我面临一个错误,几个小时内我都无法修复。在localhost上,一切看起来都很好。但在我的live域中,我遇到了会话错误。这里有一些信息可以帮助你告诉我有关错误的任何信息 我正在使用Facebook PHP SDK 我正在本地主机和live domain上使用WordPress的最新版本 我在本地主机和live domain上使用相同的文件,即应用程序的精确副本 在本地主机上,不会返回任何错误 在live domain上,我收到以下错误: 警告:session_start()[function

我面临一个错误,几个小时内我都无法修复。在localhost上,一切看起来都很好。但在我的live域中,我遇到了会话错误。这里有一些信息可以帮助你告诉我有关错误的任何信息

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

    警告: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);
我包括图书馆:

需要_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
    }
}
函数包括($lib){
全球$sofa,$user;
如果($lib=='facebook'){
//新的facebook电话
$facebook=新的facebook(数组)(
'appId'=>$sofa['fbappid'],
“秘密”=>$sofa['fbappsecret'],
));
//获取facebook用户
$user=$facebook->getUser();
//获取用户配置文件
如果($user){
试一试{
$user_profile=$facebook->api('/me');
}捕获(FacebookApiException$e){
错误日志($e);
$user=null;
}
}
?>
window.fbAsyninit=函数(){
FB.init({
appId:“”,
曲奇:是的,
xfbml:是的,
真的吗
});
FB.Event.subscribe('auth.login',函数(响应){
});
FB.Event.subscribe('auth.logout',函数(响应){
});
};
(功能(){
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);
}());

在localhost上一切正常,错误报告设置为ALL。但在我的live domain上,我总是收到发送错误的会话\u start headers。可能有什么问题?

可能是您在会话开始之前输出了facebook javascript代码,这导致了您的问题。可能您的本地服务器已通过d启用了输出缓冲efault或其他什么,而制作不

在执行sofa\u include()之前还是之后调用session\u start()?当sofa\u include('facebook')时,首先调用session\u start()调用。如果我将标题中的那一行移到顶部,问题就消失了。之前,但问题是此函数输出了facebook库的JS sdk和javascript。这真是“愚蠢”对于这个问题,给我-1。显然是一个胡说八道和有头脑的人。我已经研究了2个多小时的解决方案,这不是一个重复的问题。所以会话的声明是在你调用sofa\u include()之前或之后。我不理解你之前的评论。我对这两个函数的确切调用顺序感兴趣。
<?php sofa_include('facebook'); ?>