$ _SESSION 변수는 어디에 저장됩니까?


158

있는가 $_SESSION변수는 클라이언트 또는 서버에 저장?


당신은 PHP 응용 프로그램을 실행하는 서버에 특정 경로에 대해 당신은 phpinfo ()를 확인해야
densityx

답변:


168

$_SESSION변수 저장소 의 위치는 PHP의 session.save_path구성에 따라 결정됩니다 . 일반적으로 이것은 /tmpLinux / Unix 시스템에 있습니다. 도메인 phpinfo()의이 콘텐츠가 포함 된 파일을 만들어 100 % 확실하지 않은 경우이 기능을 사용 하여 특정 설정을 봅니다 DocumentRoot.

<?php
    phpinfo();
?>

이 구성 설정에 대한 PHP 문서 링크는 다음과 같습니다.

http://php.net/manual/en/session.configuration.php#ini.session.save-path


129

이미 언급했듯이 내용은 서버에 저장됩니다. 그러나 세션은 클라이언트에 저장되고 각 요청과 함께 전송되는 session-id로 식별됩니다. 일반적으로 session-id는 쿠키에 저장되지만 URL에 추가 할 수도 있습니다. (이것은 PHPSESSID때때로 볼 수 있는 쿼리 매개 변수입니다)


41
쿠키가 $ _SESSION의 내용을 저장하지 않음을 암시했기 때문에 +1 (이 내용은 서버에 저장되므로 클라이언트가 수정에 취약하지 않음)
shufler

12
훌륭한 답변! "브라우저 캐시를 삭제 한 후 세션이 만료되는 이유는 무엇입니까?"라는 질문을 찾고있었습니다. 그리고 당신은 내 하루를 구했습니다.
눈동자

2
서버는 브라우저에서 경보를 생성 파일 sess_7nu9p0fvidvva6ouaugqcc8292 (getCookie ( 'PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1-질문에 대한 답변 : "... 클라이언트 또는 서버에 저장되어 있습니까?"
Alex Vargas

22

일반적으로 서버에 저장됩니다. 저장된 위치는 개발자의 책임입니다. session.save_handler구성 변수 및를 사용하여 session_set_save_handler세션이 서버에 저장되는 방법을 제어 할 수 있습니다 . 기본 저장 방법은 세션을 파일에 저장하는 것입니다. 그들이 저장되는 위치는 session.save_path변수에 의해 제어됩니다 .


18

한 가지 추가 사항 : "/ tmp"가 세션 데이터가 저장된 디렉토리 (기본값 인 것 같음) 인 경우 해당 웹 서버를 재부팅 한 후 "/ tmp로 세션이 지속되지 않습니다. "는 종종 재부팅 중에 제거됩니다. 클라이언트 측 지속성의 개념은 서버의 스토리지 지속성에 따라 달라지며 세션 데이터에 "/ tmp"디렉토리를 사용하면 실패 할 수 있습니다.


13

데비안에서는 (대부분의 Linux 배포판의 경우가 아닙니까?) / var / lib / php5 /에 저장됩니다. 위에서 언급했듯이 php.ini에서 구성됩니다.


12

우분투를 사용하고 있으며 세션은 / var / lib / php5에 저장되어 있습니다.


1
고마워, 그게 내가 원하는 전부 야 예, 만약 그들이 보통 자리에 있지 않다면, INI를 열어야하는데, "세션은 보통 어디에 저장되어 있습니까?" / var / lib / php / sessions /입니다.
Eric L.

7

Taylor 씨가 지적했듯이 이것은 보통 php.ini에 설정되어 있습니다. 일반적으로 파일은 특정 디렉토리에 파일로 저장됩니다.



0

어떻게 작동합니까? 그것이 나인지 어떻게 알 수 있습니까?

대부분의 세션은 사용자 컴퓨터에서 765487cf34ert8dede5a562e4f3a7e12와 같은 사용자 키 (sessionid라고 함)를 설정합니다. 그런 다음 다른 페이지에서 세션을 열면 컴퓨터에서 사용자 키를 검색하고 서버를 실행하여 변수를 가져옵니다.

실수로 캐시를 지우면 사용자 키도 지워집니다. ID를 모르기 때문에 더 이상 서버에서 변수를 가져올 수 없습니다.


0

내 우분투 머신 세션은

/var/lib/php/sessions

당신은에있는 sudo ls경우에만이 디렉토리 ls가 발생합니다

ls : '.'디렉토리를 열 수 없습니다 : 권한이 거부되었습니다

그리고 내 Windows Wamp 서버에서 PHP 세션은

C:\wamp64\tmp

Windows에 독립형 PHP를 설치하면 기본적으로 값이 설정되지 않습니다

session.save_path => no value => no value

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.