更換PHP 5.4以上版本後Dedecms後臺登入空白的解決方法
阿新 • • 發佈:2018-11-07
把PHP的版本從5.2.14升到5.4.15,升級完後dedecms後臺開啟空白,檢查各種許可權和檔案,沒有問題,那就有可能是PHP版本函式的問題,它是用session_register來註冊一個session變數,但是在php5.4以上中已經移除了這個功能
解決辦法:
找到include/userlogin.class.php,裡面有一個keepuser()函式,它是用session_register來註冊一個session變數,但是在php5.4中已經移除了這個功能,見官網介紹:
如果使用的該php版本肯定會出錯的,不過我們可以修改下程式碼:
把@session_register($this->keepUserIDTag); 註釋掉,然後改為
- if (!isset($_SESSION[$this->keepUserIDTag]))
一共有六個,全部改為下面這樣:
- if (!isset($_SESSION[$this->keepUserIDTag]))
- //@session_register($this->keepUserIDTag);
- $_SESSION[$this->keepUserIDTag] = $this->userID;
- if
- //@session_register($this->keepUserTypeTag);
- $_SESSION[$this->keepUserTypeTag] = $this->userType;
- if (!isset($_SESSION[$this->keepUserChannelTag]))
- //@session_register($this->keepUserChannelTag);
- $_SESSION[$this->keepUserChannelTag] = $this->userChannel;
- if (!isset($_SESSION[$this->keepUserNameTag]))
- //@session_register($this->keepUserNameTag);
- $_SESSION[$this->keepUserNameTag] = $this->userName;
- if (!isset($_SESSION[$this->keepUserPurviewTag]))
- //@session_register($this->keepUserPurviewTag);
- $_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
- if (!isset($_SESSION[$this->keepAdminStyleTag]))
- //@session_register($this->keepAdminStyleTag);
- $_SESSION[$this->keepAdminStyleTag] = $adminstyle;
重新進入後臺登入,就可以正常跳轉到管理頁面了。
因為對PHP並不熟,網上一般都說是data/common.inc.php檔案編碼的問題,把編碼要改為無BOM格式檔案儲存,居然沒有說是php5.4版本的問題
另外一種方法:
在include/helpers/util.helper.php末尾加入以下程式碼
- function fix_session_register(){
- function session_register(){
- $args = func_get_args();
- foreach ($args as $key){
- $_SESSION[$key]=$GLOBALS[$key];
- }
- }
- function session_is_registered($key){
- return isset($_SESSION[$key]);
- }
- function session_unregister($key){
- unset($_SESSION[$key]);
- }
- }
- if (!function_exists('session_register')) fix_session_register();
這樣php5.4以上 dedecms就能正常使用了。