-1

php-facebook sdkを使用してPHPでFacebookアプリをコーディングしました。これは、Windows 7のwampで完全に正常に動作しています。

しかし、Linux で実行されている Web スペースに実装したところ、session_start() Cookie エラーが発生しました。

Warning: session_start() [function.session-start]: Cannot send session cookie - 
headers already sent by (output started at /mydirectory/index.php:5) in 
/mydirectory/src/facebook.php on line 37

このエラーが発生する理由がわかりません。

以下は私のコードです

<!DOCTYPE html PUBLIC  
"-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?php
    require_once('src/facebook.php');
    $app_id = "MY_APP_ID";
    $app_secret = "MY_APP_SECRET";

    $config = array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'fileUpload' => true,  
    'cookie' => true
    );
    $facebook = new Facebook($config);
    $user_id = $facebook->getUser();

 // other content

 ?>
4

4 に答える 4

4

ヘッダーを送信する前にHTMLを印刷することはできません。適切な方法は次のとおりです。

例:

<?php
session_start();
//
require 'src/facebook.php';
$facebook = new Facebook(array(
  'appId'  => '135669679827333',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
  'cookie' => true, // enable optional cookie support
  ));
  try { $user = $facebook->getUser(); } catch (FacebookApiException $e) {  }
?>
<!DOCTYPE html>
<html>
<head><title></title>
<meta />
</head>
<body>
<content here>
</body>
</html>
于 2012-08-20T23:41:17.373 に答える
0

サーバーでいくつかのポートを開く必要がある可能性はありますが、リモート サーバーのエラー レポート設定が、ローカルの開発セットアップとは異なるだけである可能性がはるかに高くなります。Facebook API がエラーを生成した場合、それはページにエコーされ、Cookie を含むすべてのヘッダーをプリエンプトします。次のように、Facebook メソッド呼び出しの前に @ 記号を追加することで、これをテストできます。

$facebook = new Facebook($config);
$user_id = @$facebook->getUser();

より堅牢で永続的な解決策は、try {} catch (){}Shawn E. Carter が提案するブロックです。私の考えでは、Facebook は毎回エラーを吐き出しており、あなたのローカル設定が原因で、あなたは気づいていません。このエラーの原因を修正することが最優先事項です。

于 2012-08-21T17:25:58.983 に答える
0

わかりませんでしたが、phpタグを開く前に次のコード行と追加の空白行を削除すると問題が解決しました。

<!DOCTYPE html PUBLIC  
 "-//W3C//DTD XHTML 1.0 Transitional//EN"  
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
于 2012-08-21T20:56:22.487 に答える
0

それを行う別の方法は次のようになります。

<?php
    ob_start();

?>

<!DOCTYPE html>
<html>
<head>
 <title></title>
<meta></meta>
</head>
<body>

<?php
require 'src/facebook.php';
//YOUR FACEBOOK methods here

?>


</body>
</html>
于 2014-07-04T15:28:22.627 に答える