我遇到了一个错误,我现在几个小时都无法修复。在本地主机上一切看起来都很好。但是在我的实时域上,我收到会话错误。这里有一些信息可以帮助您了解错误。
- 我正在使用 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代码,这导致了你的问题。也许您的本地服务器默认启用了输出缓冲或其他功能,而生产