반응형
코드이그나이터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 |