php/코드이그나이터3(CI3)
코드이그나이터3, 세션생성오류
현박이
2024. 4. 18. 12:51
반응형
코드이그나이터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을 사용하지 않도록하자
반응형