Programing

Apache / PHP에서 세션 파일의 위치

lottogame 2020. 11. 4. 07:39
반응형

Apache / PHP에서 세션 파일의 위치


Ubuntu 10.10에 Apache / PHP를 설치할 때 세션 파일의 기본 위치는 무엇입니까?


기본값 session.save_path 으로 설정되어 ""시스템의 임시 디렉토리로 평가되는. https://bugs.php.net/bug.php?id=26757 에서이 주석을 참조하십시오 .

다가오는 릴리스 (sic)의 save_path에 대한 새 기본값은 빈 문자열이며, 이로 인해 임시 디렉토리가 검색됩니다.

임시 파일에 사용되는 디렉토리 경로를 반환하는 데 사용할 수 있습니다.sys_get_temp_dir

현재 세션 저장 경로 를 찾으려면 다음을 사용할 수 있습니다.

이 함수가 빈 문자열을 반환 할 때 임시 경로가 무엇인지 알아 보려면 이 답변참조하십시오 .


먼저 또는 session.save_path사용 값을 확인하십시오 . 비어 있지 않으면 세션 파일이 저장된 위치가 표시됩니다. 많은 시나리오에서 기본적으로 비어 있으며,이 경우 다음 내용을 읽습니다.ini_get('session.save_path')phpinfo()

Ubuntu 또는 Debian 시스템에서이 session.save_path설정되지 않은 경우 세션 파일은 /var/lib/php5.

RHEL 및 CentOS 시스템에서이 session.save_path설정되지 않은 경우 세션 파일이/var/lib/php/session

소스에서 PHP를 컴파일하면 session.save_path설정하지 않으면 세션 파일이 저장됩니다 /tmp(내가 직접 테스트하지는 않았습니다).


또 다른 일반적인 기본 위치 /tmp//var/lib/php5/


컴파일 된 기본값이 확실하지 않은 경우 관련 php.ini.
일반적으로 이것은 주석 처리 된 기본값을 표시합니다.

Ubuntu / Debian 이전 / 새 php.ini위치 :
Apache가있는 /etc/php5/apache2/php.ini
이전 php5 : NGINX + FPM이있는 이전 php5 : /etc/php5/fpm/php.ini
Apache가있는 Ubuntu 16+ : /etc/php/*/apache2/php.ini*
NGINX + FPM이있는 Ubuntu 16+- /etc/php/*/fpm/php.ini*

* /*/= 시스템에 설치된 현재 PHP 버전.

Apache 에서 사용 중인 PHP 버전을 표시하려면 :

$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"

7.3

PHP 7.3이이 예제에서 실행되는 버전이므로 다음과 같이 사용합니다 php.ini.

$ grep "session.save_path" /etc/php/7.3/apache2/php.ini

;session.save_path = "/var/lib/php/sessions"

또는 결합 된 한 줄짜리 :

$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini

결과:

;session.save_path = "/var/lib/php/sessions"


또는 PHP 자체를 사용하여 "cli"환경을 사용하여 값을 가져옵니다 (아래 참고 참조).

$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$

이것도 작동합니다.

php -i | grep session.save_path

php -r 'echo phpinfo();' | grep session.save_path

노트:

의 'cli'(명령 줄) 버전은 php.ini 일반적으로 Apache2 / FPM 버전과 동일한 기본값을 갖습니다 (최소한 session.save_path). 유사한 명령을 사용하여 웹 서버의 현재 PHP 모듈 설정을 웹 페이지에 에코하고 wget / curl을 사용하여 정보를 가져올 수도 있습니다. 많은 게시물 있습니다 에 대한 phpinfo()이 점에서 사용. 그러나 PHP 인터페이스를 사용하거나 기본값을 grep올바르게 php.ini표시 하는 것이 더 빠릅니다 .

편집 : @aesede 주석 당-> 추가 php -i. 감사


Mac에서 세션의 올바른 경로를 찾는 데 같은 문제가있었습니다. 대체로 CLI PHP에는 Apache 모듈과 다른 임시 디렉토리가 있음을 알았습니다. Apache used /var/tmp, CLI는 /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T. 그러나 두 가지 방법 모두 비어 sys_get_temp_dir()있을 때 올바른 길을 얻었습니다 session.save_path. PHP 5.5.4 사용.


나는 / tmp /를 믿는다. 그래도 phpinfo 함수를 확인하십시오. 어딘가에 session.save_path가 표시되어야합니다.


현재 session.save_path을 찾는 유일한 확실한 옵션 은 항상 phpinfo()세션 저장소 디렉터리를 찾으려는 환경에서 정확히 확인하는 것 입니다.

Reason: there can be all sorts of things that change session.save_path, either by overriding the php.ini value or by setting it at runtime with ini_set('session.save_path','/path/to/folder');. For example, web server management panels like ISPConfig, Plesk etc. often adapt this to give each website its own directory with session files.


Depending on the type of server you're running it can vary. To locate the directory, search for the following in your php.ini file.

upload_tmp_dir = "c:/wamp/tmp"

The directory can be different for you.

참고URL : https://stackoverflow.com/questions/4927850/location-for-session-files-in-apache-php

반응형