본문 바로가기

php/코드이그나이터(CI3)

코드이그나이터3, 세션생성오류

반응형

코드이그나이터3(이하 CI3) 과 PHP 7.1 버젼을 사용하면서 세션에서 문제가 생겼다.

분명 컨트롤러에서는 생성이 되는데 view 로 리다이렉션만 해버리면 세팅한 세션이 사라지고 ci_last_regenerate] => 1627888197 이런 것만 남게되는 상황이다.

session_start() 를 해봐도 이미 세션은 시작되어있다고 나와있었고

config 파일에서 세션저장을 db로도 file 로도 해보고...참 많은 삽질을 한 결과

CI3 버젼과 PHP 7.1 버젼에서만 세션 오류가 생긴다는걸 확인할수 있었다.

 

해결은 CI3에 system/libraries/Session.php 파일에 들어가서 대략 130라인에

// Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers
if (isset($_COOKIE[$this->_config['cookie_name']])
    && (
        ! is_string($_COOKIE[$this->_config['cookie_name']])
        OR ! preg_match('/^[0-9a-f]{40}$/', $_COOKIE[$this->_config['cookie_name']])
    )
)
{
    unset($_COOKIE[$this->_config['cookie_name']]);
}

 

 

 

해당 코드에서 중간에 OR ! preg_match ... 부분을 주석처리했다.

 

// Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers
if (isset($_COOKIE[$this->_config['cookie_name']])
    && (
        ! is_string($_COOKIE[$this->_config['cookie_name']])
        //OR ! preg_match('/^[0-9a-f]{40}$/', $_COOKIE[$this->_config['cookie_name']])
    )
)
{
    unset($_COOKIE[$this->_config['cookie_name']]);
}

 

preg_match('/^[0-9a-f]{40}$/', $_COOKIE[$this->_config['cookie_name']])

...

혹시 해당부분을 주석처리하기 찜찜하다면 php 버젼을 7.1을 사용하지 않도록하자

'php > 코드이그나이터(CI3)' 카테고리의 다른 글

파일다운로드  (0) 2024.05.12
파일업로드  (0) 2024.05.12
php exec 실행안될때 확인  (0) 2024.05.12
php sftp로 폴더 업로드  (2) 2024.04.18
php 서버내의 폴더, 파일 압축  (0) 2024.04.18