我面临一个我现在几个小时都无法修复的错误。本地主机上的一切看起来都很好。但是在我的实时域上,我收到了会话错误。这里有一些信息可以帮助你给我关于错误的任何想法。
- 我正在使用 Facebook PHP SDK
- 我在本地主机和实时域上都使用 WordPress 最新版本
- 我在本地主机和实时域上使用相同的文件,应用程序的精确副本
- 在 localhost 上,不返回任何错误。
在实时域上,我收到该错误:
警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出开始于 /home/vantaget/public_html/wordpress/sofashare/wp-content/themes/sofashare/header.php:6 ) 在第 37 行的 /home/vantaget/public_html/wordpress/sofashare/wp-content/themes/sofashare/lib/facebook/facebook.php
这是我实现 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'); ?>
在 localhost 上一切正常,错误报告设置为 ALL。但是在我的实时域上,我总是收到 session_start 标头发送错误。有什么问题?