사례 3: doc_root 또는 user_dir 설정

웹 서버 문서 디렉토리에 스크립트 및 실행 파일과 같은 활성 콘텐츠를 포함하는 것은 때때로 안전하지 않은 관행으로 간주됩니다. 일부 설정 오류로 인해 스크립트가 실행되지 않고 일반 HTML 문서로 표시되는 경우 비밀번호와 같은 지적 재산권이나 보안 정보가 유출될 수 있습니다. 따라서 많은 시스템 관리자는 PHP CGI를 통해서만 액세스할 수 있는 스크립트에 대해 다른 디렉토리 구조를 설정하는 것을 선호하므로 항상 그렇게 해석되고 표시되지 않습니다.

또한 이전 섹션에서 설명한 것처럼 요청이 리디렉션되지 않도록 하는 방법을 사용할 수 없는 경우 웹 문서 루트와 다른 스크립트 doc_root를 설정해야 합니다.

구성 파일의 구성 지시자 doc_root로 PHP 스크립트 문서 루트를 설정하거나 환경 변수 PHP_DOCUMENT_ROOT를 설정할 수 있습니다. 이것이 설정되면 PHP의 CGI 버전은 항상 이 doc_root와 요청의 경로 정보로 열 파일 이름을 구성하므로 이 디렉토리 외부에서 스크립트가 실행되지 않는다는 것을 확신할 수 있습니다(아래 user_dir 제외).

여기서 사용할 수 있는 또 다른 옵션은 user_dir입니다. user_dir이 설정되지 않은 경우 열린 파일 이름을 제어하는 ​​것은 doc_root뿐입니다. http://my.host/~user/doc.php와 같은 URL을 열면 사용자 홈 디렉토리 아래에 파일이 열리지 않고 doc_root 아래에 ~user/doc.php라는 파일이 열립니다(예, 다음으로 시작하는 디렉토리 이름 물결표[~]).

user_dir이 예를 들어 public_php로 설정된 경우 http://my.host/~user/doc.php와 같은 요청은 사용자의 홈 디렉토리 아래에 있는 public_php라는 디렉토리에서 doc.php라는 파일을 엽니다. 사용자의 홈이 /home/user인 경우 실행되는 파일은 /home/user/public_php/doc.php입니다.

user_dir 확장은 doc_root 설정과 관계없이 발생하므로 문서 루트와 사용자 디렉터리 액세스를 별도로 제어할 수 있습니다.