カテゴリー:CodeIgniter別アプリが稼働している環境へCodeIgniterを追加する必要が出てきました。その際にセッションを共有する必要がありました。その際の作業内容をメモしておきます。前提条件もともと稼働していたアプリは素のPHPで書かれたもので、ざっくり書くと下記のような感じ。稼働中のため、アプリ側に手を加えることができない状況です。動かしてみるまずは、現状の確認をするためにアプリ、CodeIgniter両方を動かしてみます。既存のアプリ側の挙動アプリ側のセッションは下記のように生成されます。sess_aagtr98n7mmcpdrq4k492p8ef6プレフィックスのsess_はphp内でハードコーディングされている定数です。ランダムな英数字は26文字です。セッションクッキーの名前はPHPSESSIDDでした。CodeIgniterは下記のように生成されました。ci_session61ada784b1fd80dbc6442d4c24ec9c271b50ac39プレフィックスはci_session、ランダムな英数字は40文字、セッションクッキーの名前はci_sessionでした。セッションの保存場所は同じでしたが、下記の点が違いました。セッション共有までの課題セッションクッキーの名前が異なるセッションのファイル名が異なるプレフィックスが異なるランダムな英数字の文字数が異なるそれぞれを同じになるように調整をする必要があります。合わせるこちらは簡単です。application/config/config.phpを変更します。$config['sess_cookie_name']を空文字にすることでini_get('session.name');が利用されます。合わせるこちらは、プレフィックス、文字数を変更します。セッションファイルのプレフィックスを合わせるSession_files_driver.phpを拡張するため、application/libraries/Session/drivers/MY_Session_files_driver.phpを作成します。ファイルの中は以下の通りです。sess_はハードコーディングします。セッションファイルの文字数を合わせるここが一番悩んだところでした。Session.phpの下記の箇所でアプリ側のセッションクッキーが削除されてしまい、セッションの共有ができませんでした。$this->_sid_regexpの正規表現パターンにマッチしていませんでした。unset($_COOKIE[$this->_config['cookie_name']]);}そこで、Session.phpを継承し、$this->_sid_regexpを書き換えます。application/libraries/Session/MY_Session.phpとして下記の内容でファイルを作成します。}}以上で既存のアプリとCodeIgniter間でセッションの共有ができるようになりました。こんなエントリーも書いています集計中コメントコメントは公開されません。誤記、お問い合わせなどお気軽に送信してください。