PHP 5.6 SESSION 유지 및 시간 늘리기 및 자동 로그인 방법
이 글을 보시는 분들은 다른사이트에서
session.cookie_lifetime
session.cache_expire
관련 변수를 변경하였는데 세션유지가 안되서 이 글을 보고있을 껍니다.
세션 설정 외에도 GC(c#의 garbage collection) 이라고 하는 동작이 있습니다.
관련 설정 변수는 아래 3개 입니다. 아마 아래와 같은 기본값으로 설정되어 있을껍니다.
session.gc_probability = 0
session.gc_divisor = 1000 <-- 1/1000 으로 0.1% 확률로 쿠키파일이 청소 됩니다.
session.gc_maxlifetime = 0
아래와같이 수정해보세요
저는 etc/php/5.6/apache2 경로에 있는 php.ini를 수정하겠습니다.
아래와 같이 vi 편집기로 php.ini 파일을 열어줍니다.
session.cookie_lifetime = 0
session.cache_expire = 14400 (분단위)
session.gc_maxlifetime = 65535 <-- 대략 16시간 마다 쿠키파일이 청소되게 하였습니다. (초단위)
:wq! 로 수정 후 나와서
아래와 같이 꼭 아파치를 재시작 해줘야 합니다.
service apache2 restart
세션 30일 저장 만든 php 설정 값 입니다.
자동 로그인 처리(저장된 세션 쿠키 사용)
로그인 시 savesession 이라는 쿠키를 만들어서 PHPSESSIONID 값을 저장 합니다.
이후 브라우저를 다시 켰을때 만약 savesession 쿠키 값이 있으면
저장했던 savesessino 쿠키 값으로 PHPSESSIONID 필드를 만들어서 값을 넣습니다.
이렇게 되면 서버에 세션(30일)이 남아있는한 무한 자동 로그인이 됩니다.
세션정보는 파일관리로 했을경우 아래 경로에 저장 됩니다.
/var/lib/php/sessions
만약 세션설정이 실패 했다면, 이 경로의 파일들의 수정날짜를 보면 30분전 파일은 다 지워진걸 확인 할 수 있습니다.
php 소스에서 수정시에는 session_start 하는 코드에 입력되어야 합니다.
session_cache_limiter('private');
ini_set("session.cookie_lifetime", "0");
ini_set("session.cache_expire", "14400");
ini_set("session.gc_maxlifetime", "2592000");
session_start();
'웹 프로그래밍 > PHP, Ubuntu, Linux' 카테고리의 다른 글
PHP ceil(올림), floor(내림), round(반올림) (0) | 2022.08.28 |
---|---|
Class 및 생성자 선언, 객체 array_push (0) | 2022.08.28 |
jquery 여러 속성 데이터 받기 (1) | 2021.09.19 |
link, script 추가 시 뒤에 날짜 등 변수 넣는 이유 (0) | 2021.08.14 |
[PHP] PC / 모바일 (서브 도메인) 세션 공유 방법 (0) | 2021.07.31 |