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