讓你輕松解決建站問題
近期發現一些空間運行一段時間后,出現驗證碼無法驗證,即:驗證碼輸入正確的,但提示錯誤。
在本地和其它空間上進行調試,程序是沒有問題的。
經過反復在出問題的空間上調試,發現他們空間竟然無法保存session。顯示錯誤語句是session_start(); 詳細錯誤信息如下:open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/www/) 是空間保存session的默認路徑/tmp沒有了權限,因為如果默認不設置session保存路徑, session是保存在網站根目錄tmp里的,出現這個問題的原因應該是服務器的配置改變了,去掉了tmp的訪問或修改權限,所以導致session讀取和保存出錯。
解決方法一:聯系服務商給/tmp目錄設置上權限。
解決方法二:自定義session的保存路徑,關鍵代碼如下:
define('ROOT_PATH', str_replace("\\", '/', substr(dirname(__FILE__), 0, -9))); $savePath=ROOT_PATH."/tmp/";//把session保存自己網站的跟目錄,這樣就沒有目錄限制了 session_save_path($savePath); session_start();