今天突然發(fā)現(xiàn),一個(gè)運(yùn)行9個(gè)月的PHP萬網(wǎng)Linux空間出現(xiàn)驗(yàn)證碼無法通過,會(huì)員無法登陸,后臺(tái)也無法登陸的問題,因?yàn)檫@幾個(gè)功能一直運(yùn)行很好,而且服務(wù)器也是國內(nèi)最好的萬網(wǎng),頁面訪問很正常,所以感到非常的奇怪。
經(jīng)過方維技術(shù)部檢測(cè),是session無法保存的問題,顯示錯(cuò)誤語句是session_start();
詳細(xì)錯(cuò)誤信息如下:
open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/www/)
是空間保存session的默認(rèn)路徑/tmp沒有了權(quán)限,因?yàn)槿绻J(rèn)不設(shè)置session保存路徑, session是保存在網(wǎng)站根目錄tmp里的,出現(xiàn)這個(gè)問題的原因應(yīng)該是萬網(wǎng)服務(wù)器配置改變,去掉了tmp的訪問或修改權(quán)限,所以導(dǎo)致session讀取和保存出錯(cuò)。所以出現(xiàn)這個(gè)問題的原因是萬網(wǎng)服務(wù)器配置改變,解決辦法是自定義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();