PHPのセッション変数をCakePHPのコントローラから参照するには
CakePHPのデフォルト設定では、CakePHPのコントローラ以外のPHPでセットされたセッション変数を、CakePHPのコントローラから参照することはできません。
これは、PHPのセッションIDとCakePHPのセッションIDが異なっていることが原因なので、相互に参照するにはセッションIDを合わせる必要があります。
自分はCAPTCHAのライブラリSecurimageをCakePHPのアプリに組み込んでいたらこれに引っかかりました。
Securimageのように$_SESSIONに直接変数を指定するような外部のライブラリや既存のPHPとCakePHPを連携する場合は必要になる設定だと思われます。
PHPのセッションIDはphp.iniのsession.nameで指定されています。
Ubuntu 10.04でmod-php5の場合、php.iniファイルは/etc/php5/apache2にあります。
; Name of the session (used as cookie name). ; http://php.net/session.name session.name = PHPSESSID
CakePHPのセッションIDの指定は/app/config/core.phpファイルに設定されています。
CakePHPのデフォルトのセッションIDはCAKEPHPです。
以下の例では、PHPのセッションIDと合わせています。
/** * The name of CakePHP's session cookie. * * Note the guidelines for Session names states: "The session name references * the session id in cookies and URLs. It should contain only alphanumeric * characters." * @link http://php.net/session_name */ # Configure::write('Session.cookie', 'CAKEPHP'); Configure::write('Session.cookie', 'PHPSESSID');