Bridge a legacy Application with Symfony Sessions

If you're integrating the Symfony full-stack Framework into a legacy application that starts the session with session_start(), you may still be able to use Symfony's session management by using the PHP Bridge session.

Symfony フルスタック フレームワークを、session_start() でセッションを開始するレガシー アプリケーションに統合している場合でも、PHP Bridge セッションを使用して Symfony のセッション管理を使用できる場合があります。

If the application has its own PHP save handler, you can specify null for the handler_id:

アプリケーションに独自の PHP 保存ハンドラがある場合は、handler_id に null を指定できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
# config/packages/framework.yaml
framework:
    session:
        storage_factory_id: session.storage.factory.php_bridge
        handler_id: ~

Otherwise, if the problem is that you cannot avoid the application starting the session with session_start(), you can still make use of a Symfony based session save handler by specifying the save handler as in the example below:

そうではなく、アプリケーションが session_start() でセッションを開始することを回避できないという問題がある場合でも、以下の例のように保存ハンドラーを指定することで、Symfony ベースのセッション保存ハンドラーを利用できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
# config/packages/framework.yaml
framework:
    session:
        storage_factory_id: session.storage.factory.php_bridge
        handler_id: session.handler.native_file

Note

ノート

If the legacy application requires its own session save handler, do not override this. Instead set handler_id: ~. Note that a save handler cannot be changed once the session has been started. If the application starts the session before Symfony is initialized, the save handler will have already been set. In this case, you will need handler_id: ~. Only override the save handler if you are sure the legacy application can use the Symfony save handler without side effects and that the session has not been started before Symfony is initialized.

レガシ アプリケーションが独自のセッション保存ハンドラーを必要とする場合は、これをオーバーライドしないでください。代わりに、handler_id: ~.セッションが開始されると、保存ハンドラは変更できないことに注意してください。 Symfony が初期化される前にアプリケーションがセッションを開始した場合、保存ハンドラーは既に設定されています。この場合、handler_id: ~ が必要です。レガシーアプリケーションが副作用なしで Symfony 保存ハンドラーを使用でき、Symfony が初期化される前にセッションが開始されていないことが確実な場合にのみ、保存ハンドラーをオーバーライドしてください。

For more details, see Integrating with Legacy Sessions.

詳細については、レガシー セッションとの統合を参照してください。