今天客戶購買了我們一套織夢博彩模板,給他安裝之後發現後臺登錄之後提示500錯誤,經過檢查發現他的環境php版本是5.4的,通過百度搜索下發現很多朋友都碰到這種問題。
原因很簡單,服務器php環境用的php5.4,而dedecms的login.php中使用了一個被php5.4拋棄不用的函數(是不是真的拋棄我不知道,反正原文這麼寫的)
session_register()
意思就是這說個函數不能用了,想用也用不了。方法很簡單,直接註釋掉,不用進行註冊就可以聲明session。
在dedecms目錄include/userlogin.class.php中查找
function keepUser()
大概在281行,把keepUser()函數下的 @session_register(); 整段註釋掉(刪除也可以),結果如下:
-
function keepUser()
-
{
-
if($this->userID != '' && $this->userType != '')
-
{
-
global $admincachefile,$adminstyle;
-
if(emptyempty($adminstyle)) $adminstyle = 'dedecms';
-
-
//@session_register($this->keepUserIDTag);
-
$_SESSION[$this->keepUserIDTag] = $this->userID;
-
-
//@session_register($this->keepUserTypeTag);
-
$_SESSION[$this->keepUserTypeTag] = $this->userType;
-
-
//@session_register($this->keepUserChannelTag);
-
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
-
-
//@session_register($this->keepUserNameTag);
-
$_SESSION[$this->keepUserNameTag] = $this->userName;
-
-
// @session_register($this->keepUserPurviewTag);
-
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
-
-
//@session_register($this->keepAdminStyleTag);
-
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
-
-
PutCookie('DedeUserID', $this->userID, 3600 * 24, '/');
-
PutCookie('DedeLoginTime', time(), 3600 * 24, '/');
-
-
$this->ReWriteAdminChannel();
-
-
return 1;
-
}
-
else
-
{
-
return -1;
-
}
-
}
另外的解決方法就是在include/userlogin.class.php 中聲明一個函數
-
function session_register()
-
{
-
return true;
-
}
以上爲別人家的,現在開始是我自己的,遇到這種問題,千萬不要那麼處理,保不齊以後再出什麼幺蛾子。老老實實的看看源碼說明文檔,這套源碼推薦php5.2 那麼我們就把php版本降到5.2
問題全部解決。