chrooting이 활성화 된 상태에서 php-fpm을 설정하고 있습니다. 이제 두 가지 옵션이 있으며 정확한 차이점이 무엇인지 알고 싶습니다.
설정에는 다음이 있습니다.
chroot = /var/www/domains/domain.tld/
; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
chdir = /docroot/
여기에 두 개의 다른 위치가 있으며 PHP가 액세스 할 수있는 경로는 무엇입니까? PHP 웹 사이트에 액세스 할 수 있습니까 /var/www/domains/domain.tld/
, 아니면 docroot
디렉토리가있는 파일에만 액세스 할 수 있습니까 ?
===
어쩌면 나에게 구체적인 조언이있을 수 있습니다. 다음과 같은 설정을 원합니다.
웹 루트 위치 : /var/www/
domain.com/
|---conf/
| |--nginx.conf
| |--php-fpm.conf
|
|---ssl/
|---logs/
|---session/
|---domains/
|---www/
|---app/
|---dev/
이제 php-fpm 설정은 다음과 같습니다.
chroot = /var/www/domain.com/
chdir = /domains/www
이제 주요 질문은 www
하위 도메인 에있는 응용 프로그램 이 dev
또는 의 파일에 액세스 할 수 있는지 app
입니다. 또는 세션 저장 경로 인 세션에있는 파일 또는 ssl 및 로그와 같은 다른 폴더도 있습니다.
답변
- Chroot는 ‘root’디렉토리를 설정합니다. 루트 디렉토리를 탐색 할 수 없습니다.
- Chdir은 단순히 시작 디렉토리를 변경합니다-여전히 다른 디렉토리 (이것을 포함하여)를 탐색 할 수 있습니다.
- chroot 경로를 지정하지 않으면 ‘실제’루트가 적용되고 절대 chdir을 지정합니다.
- chroot 경로를 지정하면 chroot의 경로를 기준으로 경로를 지정합니다 (root 디렉토리를 재정의 함).
당신이 제안한 설정은 꽤 괜찮아 보입니다.
- 시작 경로는 chroot 경로 + chdir 경로입니다.
- 앱은 다른 루트 (예 : php_openbasedir, 권한 등)가없는 한 chroot 경로 아래의 모든 파일에 액세스 할 수 있습니다.
참고로-PHP 응용 프로그램은 표시된 문서 구조를 기반으로 nginx.conf 및 php-fpm.conf에 액세스 할 수 있습니다. 해당 사용자에게만 해당).