他のシステムと連携させるために
2007/04/01 | cakePHP
cakePHPを別のブログシステムと連携させるところで再びはまる。
ブログシステムで設定した認証が引き継げない。認証の状態はセッションに持たせているわけだからセッションが引き継げていないことになる。
実際、スクリプト中で「var_dump($_SESSION);」などとしても、ブログ側とcakePHP側では異なるものが出力された。何故???。
30分くらい悩んでようやく理由がわかった。「セッションが引き継げていない」(いや、それはそうなんだけどさ)。
セッションが引き継げない時にやってみることを考えてみた。
(1) 手動で「?PHPSESSID=」などとURLに付加して試してみる。
これはNGだった。
(2) セッションの保存場所を確認してみる。
どちらも「/tmp」だった。
(3) セッション名が違う???。
これが正解でした。そもそもフレームワークでもブログシステムでも、そこそこの仕組みになってくるとセッション名を自前で設定していることが多いっぽい。そこには注意がいかなかった。
cakePHPでは以下のファイルでセッション名を設定できるみたい。
app/config/core.php
ここでdefine(‘CAKE_SESSION_COOKIE’,’CAKEPHP’);の記述を書き換えることで、無事セッションが引き継げるようになった。よかった、よかった。久しぶりに基本的なところで悩んでしまったよ。
2007/08/27 at 6:26 PM
同じようなワナに嵌っていまして、助かりました。
ありがとうございました。