concrete5.7でセッションハンドラをデータベースに変更する

concrete5.7でセッションハンドラをデータベースに変更する

DBconcrete5

サーバの設定がガチガチでセッションが書き込めなくなっていたのでデータベースに書き込む方法に変更したので、そのやり方についてメモします。

まず、親ページデータの取得方法

そもそもセッションってなんぞ?

セッションとはサーバーとクライアントとの一連のやりとりのことです。 どのユーザーがアクセスしてきているのか、あるいはこれまでにどのような情報のやり取りが あったのかと?いったことを判断します。 このようなサーバーとクライアント間の情報を管理・保持することをセッション管理と言います。
http://www.standpower.com/php_session.html

セッションはどうやって管理される?

サーバーはリクエストがあったクライアントに対して、セッションIDというものを発行し、クライアント側に保存させます。 サーバーはセッションIDとクライアントとのやり取りの情報を保存します。 次回、クライアントがそのサーバーに接続した際に、セッションIDにより それまでにやり取りした情報や記録を保持したものを引き継ぐことができるのです。

ちなみにクッキーの違う点はクライアント側で情報を保存します。

通常のセッションの保存場所

セッションを利用するためにはphp.iniに以下のような設定が必要になります。

  • session.use_trans_sid = on
  • session.save_path = 任意のディレクトリ

これでセッションをスタートさせれば通常セッションが任意のディレクトリ内に保存されるようになりますので、使えるようになるわけです。

が、

サーバのセキュリティがガチガチでセッションファイルを書き込むディレクトリーが見当たらないよーと途中からエラーを吐くようになりました。

本題:セッションの保存場所を変えてみよう!

ということで仕方ないので、セッションの保存場所をデータベース内に変更することに。

まずconcrete.phpを作成、application/config内に保存。

ここにこのファイルを作ることによって、concrete/config/concrete.phpをオーバーライドします。

すでに他の設定で作っている場合は、return array();の中に以下のようにコードを追記します。

return array(
    'session' => array(
        'handler' => 'database',
    )
);

これでセッションはデータベース内に保存されるようになりました。

この記事を書いた人

かみーゆ/フロントエンドエンジニア

資金ゼロからフィリピンで起業した海外ノマドエンジニア。IT業界10年以上でテクニカルディレクター(技術責任者)・エンジニア講師・ブリッジSEを経てLenzTechnologies Inc.を設立し、代表を務める。CMS concreteCMSエバンジェリスト。テックブログ以外も「磨耗しない人生」や「海外ノマド」のライフスタイルについて発信。好きなものは肉とハイボール。