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 件のコメント:
コメントを投稿