PHP-FPM의 chroot 및 chdir 디렉토리 value must be an absolute path. ;

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에 액세스 할 수 있습니다. 해당 사용자에게만 해당).