2

元のソースコードを変更せずにsession_startの競合を解決するにはどうすればよいですか?そして、SymfonyコンポーネントまたはSilexはどのようにセッションがすでに存在するかどうかをチェックしますか?

Notice: A session had already been started - ignoring session_start() in
myapp/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php on line 146

編集:これがindex.phpの最初の数行です

require_once __DIR__.'/vendor/autoload.php';

/**
 * from Heroku's Facebook template
 */
require_once('AppInfo.php');
require_once('utils.php');


use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\Yaml\Parser;
use Silex\Provider\FormServiceProvider;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Currently using git submodule, will move to composer.json
 */
require_once('sdk/src/facebook.php');

$facebook = new Facebook(array(
  'appId'  => AppInfo::appID(),
  'secret' => AppInfo::appSecret(),
));

$app = new Silex\Application();
// ...
4

1 に答える 1

5

FB SDK は、まだ開始されていない場合にのみセッションを開始します。sdk の初期化を、silex のセッションを開始するコードの後に​​移動します。

これは、ユーザーがセッションを持っているかどうかを確認するために Symfony2 が使用する関数です。本質的には、セッション Cookie の存在をチェックします。

于 2012-07-03T10:58:54.593 に答える