Ubuntu 10.10에 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
현재 세션 저장 경로 를 찾으려면 다음을 사용할 수 있습니다.
이 함수가 빈 문자열을 반환 할 때 임시 경로가 무엇인지 알아 보려면 이 답변 을 참조하십시오 .
php.ini
파일 이 두 개 있습니다 php_info()
. 현재 평가 중에 어떤 파일 이 사용 중인지 알려주고 파일 locate php.ini
을 찾는 데 도움이 될 것입니다.
먼저 또는 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
(내가 직접 테스트하지는 않았습니다).
php.ini
) 내 세션이 아래에 있습니다/var/lib/php5/sessions
php -i | grep session.save_path
CLI (아마도 Apache) 세션 저장 경로의 경우. 또한 주어진 php.ini
경로는 일반적으로 '기본'경로를 표시합니다. 그냥 주석 처리 된 것입니다.
/tmp
)을 대체 / 기본값으로 사용합니다. php.net/manual/en/…을
/etc/php/7.0/*/php.ini
-> ;session.save_path = "/var/lib/php/sessions"
-주석이 '설정되지 않음'이 의미하는 것은 아닙니다. 분명히 'blank'(/ tmp)가 아닌 다른 것으로 설정되어 있으며 비어 있거나 널 문자열이 아닙니다.
에 대한 컴파일 된 기본값이 확실하지 않은 경우 session.save_path
관련 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
. 감사
php -i
로 CLI에서 phpinfo () 동등한 것을 얻을 수 있습니다 .
또 다른 일반적인 기본 위치 /tmp/
는/var/lib/php5/
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 사용.
위의 항목 중 어느 것도 PHP 7.2와 함께 CentOS 7의 IUS 리포지토리를 사용하여 저에게 효과적이었습니다.
php -v
> PHP 7.2.30 (cli) (built: Apr 19 2020 00:32:29) ( NTS )
php -r 'echo session_save_path(), "\n";
>
php -r 'echo sys_get_temp_dir(), "\n";'
> /tmp
그러나 세션은 /tmp
폴더에 저장되지 않고 다음 폴더에 저장되었습니다 /var/lib/php/mod_php/session/
.
ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k sess_ck5dtaerol28fpctj6nutbn6fn sess_i24lgt2v2l58op5kfmj1k6qb3h sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t sess_dvrt9fmfuolr8bqt9efdpcbj0d sess_igdaksn26hm1s5nfvtjfb53pl7 sess_tgf5b7gkgno8kuvl966l9ce7nn
현재 session.save_path
값 을 찾는 유일한 확실한 옵션 은 항상 phpinfo()
세션 저장소 디렉터리를 찾으려는 환경에서 정확히 확인하는 것 입니다.
이유 : 값 session.save_path
을 재정의 php.ini
하거나 런타임에로 설정 하여 변경되는 모든 종류의 항목이있을 수 있습니다 ini_set('session.save_path','/path/to/folder');
. 예를 들어 ISPConfig, Plesk 등과 같은 웹 서버 관리 패널은 종종이를 조정하여 각 웹 사이트에 세션 파일이있는 자체 디렉토리를 제공합니다.
<?php phpinfo() ?>
를 작성하고session.save_path
.