2013年8月31日土曜日

FuelPHPでSessionがCookieに保存できなかった話

FuelPHPをようやく使いこなせてきたところでSessionのset_flashとかを使ってValidationエラーの表示をやろうと思ったらCookieに保存すらされていない現象が起きました。

結果からいうとFuelPHPはなにも悪くなく、リバースプロキシのサーバ時刻がGMTになってたのが原因でした。

同じサーバでバーチャールホストでFuelPHPを複数動かしていたのですが、一方ではSessionが使え、一方ではSessionが使えない不思議な現象で特定まで時間がかかりました。

 

FuelPHPのSessionは賢く、有効期限やらなんやら全部やってくれます。

なぜ同じサーバなのにSessionが動いたり(動いているように見えたり)、動かなかったりしたのかというと、

Sessionが動いてる方ではユーザ認証を使っていたためSessionの有効期限を大幅に伸ばしており、GMT-JSTの時刻差を超えて運用していたのでSession使えていました。

もう一方ではFuelPHP標準のSession有効期限を使っていたため、GMT-JSTの時刻差によって常にSession切れになっていたのです。

 

さらに問題だったのがFuelPHPを動かしているサーバ自体はJSTに設定してあり問題なかったのですが、リバースプロキシとしてVarnishサーバをかませており、そのVarnishサーバの時間がGMTだったことです。

ChromeでCookieを見ていた時、たまたまHTTP Headerを見て気がついたからよかったものの、随分初歩的なミスを犯してしまいました。

普段サーバを立てる時はntpdを一番最初に入れているのにVarnishサーバだけ入ってなかった…

 

0 件のコメント:

コメントを投稿