2

ローカル サーバーで Symfony2 セッションを使用できません。「通知: セッションは既に開始されています - session_start() を無視しています」というエラーが表示されます。

同じスクリプトが実稼働サーバーで正常に動作します。

Windows 7 で PHP 5.3.5 で Xampp を使用しています。php.ini でセッションの auto_start がオフになっています。

どんなヒントでも役に立ちます。ありがとう

4

1 に答える 1

12

ちょっと遅いと思いますが、お役に立てれば:

php.ini で session.autostart がオフ (0) になっていることを確認してください。

Symfony 2 でコントローラーからセッションを使用する方法は次のとおりです。

$session = $this->getRequest()->getSession();

// store an attribute for reuse during a later user request
$session->set('foo', 'bar');

// in another controller for another request
$foo = $session->get('foo');

// use a default value if the key doesn't exist
$filters = $session->get('filters', array());

http://symfony.com/doc/current/book/controller.html#managing-the-session

またはビューから:

{{ app.session.get('foo') }}

また、セッション データの読み取り/書き込み時に自動的に呼び出される場合でも、start() を呼び出す必要があります (たとえば、推奨されており、getId() では呼び出されないため)。

$session->start();
$id = $session->getId();

http://symfony.com/doc/master/components/http_foundation/sessions.html

本番サーバーでエラーが発生しない理由は、優先度が「通知」のみであるためです。

于 2012-11-14T04:26:29.153 に答える