PHP 버전을 5.2.14에서 5.4.15로 업그레이드했는데, dedems 배경이 공백으로 열리더군요. 각종 권한과 파일을 확인해 보았는데 문제가 없었습니다. PHP 버전 함수에서는 session_register를 사용하여 세션 변수를 등록하지만 이 함수는 php5.4 이상에서 제거되었습니다.
해결책:
include/userlogin.class.php를 찾으세요. 거기에는 session_register를 사용합니다. 그러나 이 함수는 php5.4에서 제거되었습니다:
이 PHP 버전을 사용하면 분명히 오류가 발생하지만 코드를 수정할 수 있습니다.
@session_register($this->keepUserIDTag)를 주석 처리하고
로 변경합니다.
if (!isset($_SESSION[$this->keepUserIDTag]))
총 6개가 있는데 모두 다음과 같이 변경되었습니다.
if (!isset($_SESSION[$this->keepUserIDTag])) //@session_register($this->keepUserIDTag); $_SESSION[$this->keepUserIDTag] = $this->userID; if (!isset($_SESSION[$this->keepUserTypeTag])) //@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-free 형식으로 저장하려면 인코딩을 변경해야 합니다. 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를 정상적으로 사용할 수 있습니다. 이 글에서 공유한 두 가지 방법이 모두가 문제를 원활하게 해결하는 데 도움이 되기를 바랍니다.