一、問題描述
接手一個項目,使用ThinkPhp3.2.3,在線上環境( Centos7.4 + Nginx1.14 + MySQL5.7 + PHP7.2.4 )運行沒有問題,
在本地環境( phpStudy 集成開發環境 Windows7 (64位) + Apache + MySQL5.7.17 + PHP7.2.10 )部署項目時,發現Cookie 頁面跳轉無效。
具體表現為:登錄頁面使用 cookie 保存用戶信息,在登錄頁面打印 cookie 信息,發現 Cookie 信息成功保存,但是登錄成功后,頁面
跳轉到其他頁面,會再次跳轉回登錄頁面。調試后發現,原因是其他頁面通過 Cookie 來判斷登錄信息時失敗,所以返回登錄頁面,即在其
他頁面無法讀取已保存的 Cookie 信息。
類似現象如下:
二、參考解決方案
1、如果在登錄頁面設置 cookie 時使用 TP3.2.3 的助手函數 cookie(),在其他頁面使用原生的 setCookie() 判斷 Cookie 信息時,需要
注意 Cookie 前綴,否則會讀取失敗;
2、注意 TP3.2.3 中配置中 cookie 的有效期、有效域名以及路徑;
3、文件權限問題;
4、文件 bom 頭的原因,參考:
三、最終解決方案
針對本人的項目情況,以上方案無效,最終的解決方案有兩個:
1、摒棄 TP3.2.3 的助手函數 cookie(), 采用原生setCookie() 函數和 $_COOKIE[];
2、本地運行環境配置為: phpStudy 集成開發環境 Windows7 (64位) + Apache + MySQL5.7.17 + PHP5.6.27 (改變PHP版本)。
本人最終采取的方案:改變 php 版本。