Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@applexco

EC-CUBE4 セッション情報の出力先をデータベースに変更

More than 1 year has passed since last update.

まえおき

EC-CUBE4のセッション管理のデフォルトはファイル書き出しになっているので、Webサーバーの冗長化などを行ったときには各サーバーでセッション情報を管理してしまうと問題が発生するケースがあります。

そのため、セッション情報の書き出しを ファイル から データベース に変更します。

作業

1. PdoSessionHandler にデータベースの接続先を伝える

app/config/eccube/services.yaml
# ↓ここから
    Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
        arguments:
            - '%env(DATABASE_URL)%'
# ↑ここまでを追記

2. sessionPdoSessionHandler が使われるようにする

app/config/eccube/packages/framework.yaml
    session:
# ↓ここから
#        handler_id: session.handler.native_file
#        save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
# ↑ここまでをコメントアウト

# ↓ここから
        handler_id : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
# ↑ここまでを追記

3. インストーラー実行時は、ファイルシステムが使われるようにする

app/config/eccube/packages/install/framework.yaml
framework:
  session:
    handler_id: session.handler.native_file
    save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'

4. マイグレーションファイル作成

php bin/console doctrine:migrations:generate
app/DoctrineMigrations/VersionYYYYMMDDHHMISS.php
    public function up(Schema $schema) : void
    {
        // this up() migration is auto-generated, please modify it to your needs
        $this->addSql('CREATE TABLE `sessions` (
    `sess_id` VARCHAR ( 128 ) NOT NULL PRIMARY KEY ,
    `sess_data` MEDIUMBLOB NOT NULL ,
    `sess_time` INTEGER UNSIGNED NOT NULL ,
    `sess_lifetime` MEDIUMINT NOT NULL
) COLLATE utf8_bin, ENGINE = InnoDB');
    }

    public function down(Schema $schema) : void
    {
        // this down() migration is auto-generated, please modify it to your needs
        $this->addSql('drop table sessions');
    }

5. マイグレーション実行

php bin/console doctrine:migrations:migrate

以上です


参考:
https://symfony.com/doc/current/doctrine/pdo_session_storage.html

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
applexco

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?