2016年2月17日 星期三

IIS 6 的環境,PHP 無法設定 cookie

今天,發生一件奇怪的事。使用 Laravel 5.0 開發的應用程式,在用 Firefox 和 Chromium 登入時,總是會發生 "TokenMismatchException in VerifyCsrfToken.php" 的錯誤。但使用 IE 則不會有錯誤。

使用的環境是 IIS 6,Windows 2003,PHP 5.4.31。觀察 cookie,發覺沒有寫入 Laravel session 的 cookie,因而每次 refresh 時,都會開啟新的 session。

寫個小程式測試,發現 PHP 的 session 功能正常,但無法設定 cookie。再更進一步測試,是有設定 timeout 時,無法設定 cookie。但不設定 timeout 時,也就是 "Expires: At end of session",則能成功設定 cookie。

對策,修改 config/session.php 中的「'expire_on_close' => true,」即可。原為 false。

沒有留言: