CI 묻고 답하기

제목 세션 저장이 안됩니다.
카테고리 CI 2, 3
글쓴이 쪼무래기 작성시각 2022/04/29 17:03:56
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 7582   RSS

ci 버전은 3.1.13, php7.2버전 사용중입니다.

config.php 에서 database로 설정했고, 세션테이블도 정상적으로 생성 됐습니다.

세션 라이브러리 로드는 autoload.php 에서 로드하도록 했습니다.

코드이그나이터  system 쪽 수정한 부분도 없고요.

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_samesite'] = 'Lax';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

위와 같이 설정 후 테스트 해보니 db에 저장도 안될 뿐더러 

개발자도구 -> 애플리케이션 탭에서 쿠키가 PHPSESSID는 생성이 되는데 ci_session이 생성이 안되는것을 확인했습니다.

이런경우 서버 설정의 문제일까요?? 

 

 다음글 ci4 설치중 에러 관련 문의 드려요~ (1)
 이전글 ci4 postgresql 연동 관련 문의 (2)

댓글

변종원(웅파) / 2022/04/29 19:46:13 / 추천 0
db말고 파일로 해보세요. 파일로 저장이 잘 되면 db문제입니다. 저장이 안되는게 아니라 저장후 빈 세션이 추가되서 생기는 현상입니다.
쪼무래기 / 2022/05/02 14:49:08 / 추천 0

files로 설정해도 결과는 똑같았습니다.

세션데이터를 출력하면 별도로 설정한 세션데이터는 출력이 되는데 

session_id, ip_address, user_agent, last_activity가 출력이 안되네요.

변종원(웅파) / 2022/05/02 15:21:41 / 추천 0

쪼무래기/ 그럼 질문을 잘못 하신 것 같네요. 별도로 저장한 세션데이터가 출력되는데 <- 세션이 정상적으로 작동하고 있는 겁니다.

session_id, ip_address, user_agent, last_activity 이 값들은 세션라이브러리에서 관리하는 값들이라 일반적인 세션라이브러리 명령으로 출력되지 않는게 정상입니다.

해당 값들은 매뉴얼 참고하세요. http://www.ciboard.co.kr/user_guide/kr/libraries/sessions.html#accessing-session-metadata

쪼무래기 / 2022/05/02 15:39:32 / 추천 0

메타데이터 값은 테스트차 출력을 해본것이고요. 질문은 똑같습니다. 세션이 정상적으로 작동하고 있다면 왜 db에 값이 들어가지 않는걸까요 .. 

며칠 더 고생을 해야되나 봅니다. 답변 감사합니다

한대승(불의회상) / 2022/05/02 16:41:26 / 추천 0

@쪼무래기 CI 세션 드라이버가 정상적으로 설정 되었다면, 세션 쿠키의 이름은 일반적으로 'ci_session' 으로 생성되는데 'PHPSESSID' 로 확인이 되신다는 부분이 조금 걸리네요.

설정정보도 기본 설정인 $config['sess_cookie_name'] = 'ci_session'; 으로 되어 있으니 혹시 session_start()를 호출하고 계신다면 주석 처리후 테스트 해보세요.

쪼무래기 / 2022/05/25 09:25:49 / 추천 0

한대승(불의회상)님 답변 감사합니다. session_start()를 별도로 호출하는 코드를 넣진 않았습니다.

몇가지 더 질문이 있는데 답변해주시면 감사하겠습니다. 문제가 발생되는 지점은 찾은것 같은데 이게 왜 문제가 되는지는 여전히 모르겠거든요.

1. Session 라이브러리에 보니 다음과 같은 내용이 있는데 

ci session을 쓰기 위해서는 php.ini 에서 session.auto_start 가 0으로 되어있어야 하나요?

아래 코드에서 return 시켜서  ci 세션 쿠키가 생성되지 않는것 같습니다.

system/libraries/Session/Session.php 79번 라인

elseif ((bool) ini_get('session.auto_start'))
{
	log_message('error', 'Session: session.auto_start is enabled in php.ini. Aborting.');
	return;
}

2. 이것저것 건드려보다가 $config['csrf_protection'] = true -> false로 바꿨는데 PHPSESSID 쿠키가 생성되는것을 확인했습니다.

(ci세션 쿠키도 생성이 안되고 PHPSESSID 쿠키도 생성이 안되던 상황이었습니다) 

혹시 관련된 이슈가 있나요?

한대승(불의회상) / 2022/05/25 09:48:59 / 추천 0
session.auto_start 항목은 session_start()를 자동으로 실행 하는것과 같습니다.
쪼무래기 / 2022/05/25 09:52:17 / 추천 0

한대승(불의회상) 님 

네 알고있습니다. 

session.auto_start = 1 로 설정되어있을때 config.php에서 session save path 도 적용이 되지 않고, ci 세션쿠키가 작동하지 않아서 여쭤 보았습니다.

한대승(불의회상) / 2022/05/25 11:04:15 / 추천 0
세션이 실행된 이후 적용한 설정은 적용되지 않습니다.