今天突然發(fā)現(xiàn),一個運行9個月的PHP萬網(wǎng)Linux空間出現(xiàn)驗證碼無法通過,會員無法登陸,后臺也無法登陸的問題,因為這幾個功能一直運行很好,而且服務器也是國內(nèi)最好的萬網(wǎng),頁面訪問很正常,所以感到非常的奇怪。
經(jīng)過方維技術(shù)部檢測,是session無法保存的問題,顯示錯誤語句是session_start();
詳細錯誤信息如下:
open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/www/)
是空間保存session的默認路徑/tmp沒有了權(quán)限,因為如果默認不設置session保存路徑, session是保存在網(wǎng)站根目錄tmp里的,出現(xiàn)這個問題的原因應該是萬網(wǎng)服務器配置改變,去掉了tmp的訪問或修改權(quán)限,所以導致session讀取和保存出錯。所以出現(xiàn)這個問題的原因是萬網(wǎng)服務器配置改變,解決辦法是自定義session的保存路徑,關(guān)鍵代碼如下:
define('ROOT_PATH', str_replace("\\", '/', substr(dirname(__FILE__), 0, -9)));
$savePath=ROOT_PATH."/tmp/";//把session保存自己網(wǎng)站的跟目錄,這樣就沒有目錄限制了
session_save_path($savePath);
session_start();