13 개월 후, 나는 내 자신의 질문을 다시하고 싶었다. 그 당시 저는 6 개 웹 사이트를 IIS 6에서 IIS 7.5로 이전하고 선호하는 방법으로 구성했습니다. 내가 말할 수있는 것은 웹 사이트가 작동하고 보안 문제가 없었으며 (이 사이트는 인기있는 사이트는 아닙니다) 내 의견으로는 설치가 learn.iis.net이 권장하는 것보다 더 안전하다는 것입니다.
후손을 위해 관련 설정은 다음과 같습니다. PHP INI에서 :
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
IIS에서 :
- 응용 프로그램 풀> 자격 증명> ApplicationPoolIdentity
- 웹 사이트> 인증> 익명 인증> 특정 사용자 : IUSR
NTFS 권한 및 적용 위치 :
- IUSR- 그랜트 읽기, 쓰기 거부
- IIS 웹 사이트의 루트 디렉토리 예를 들어 Zend Framework 프로젝트에서이 디렉토리는 / public 디렉토리입니다.
- 응용 프로그램이 파일을 업로드하여 공용 디렉토리에 저장하는 경우이 권한을 임시 업로드 디렉토리에 적용해야합니다.
move_uploaded_file
업로드 디렉토리의 권한을 유지 하기 때문 입니다. 이것이 내가 찾은 권한 설정의 가장 큰 단점입니다.
- ApplicationPoolIdentity (
IIS AppPool\<<YourApplicationPoolName>>
)-읽기 및 목록 부여
- PHP 응용 프로그램의 루트 예를 들어 Zend Framework 프로젝트에서는 전체 프로젝트가됩니다.
- 응용 프로그램 폴더에없는 응용 프로그램에 포함 된 모든 외부 라이브러리 (Zend, Doctrine 등)
- ApplicationPoolIdentity- 그랜트 수정
- 응용 프로그램이 같은 기록 할 모든 위치
upload_tmp_dir
, session.save_path
및 error_log
.
- 때로는 Doctrine의 프록시 자동 생성 과 같은 기능을 지원하기 위해 개발 환경에서 PHP 응용 프로그램의 루트에이 권한을 추가해야합니다 .
- ApplicationPoolIdentity- 보조금 목록
- 응용 프로그램이 가상 디렉터리에있는 경우이 권한을 웹 사이트의 루트에 추가해야합니다. 이를 통해 응용 프로그램은 부모 web.config를 읽을 수 있습니다. 예를 들어, 애플리케이션 루트가 http://example.com/MyPHPApp 인 경우 example.com 웹 디렉토리에서이 권한을 설정하십시오. 특히이 컨테이너 내에서만 "이 폴더 및 파일"에만 적용하면됩니다.
이것이 learn.iis.net 지침이 이상적이지 않다고 결정하는 다른 사람들에게 도움이되기를 바랍니다.