주요 콘텐츠로 건너뛰기
이 브라우저는 더 이상 지원되지 않습니다.
최신 기능, 보안 업데이트, 기술 지원을 이용하려면 Microsoft Edge로 업그레이드하세요.
PHP 설치 및 구성
- 아티클
- 09/24/2022
- 읽는 데 21분 걸림
이 문서의 내용
로 탈리 스미스
IIS(인터넷 정보 서비스)에 PHP를 설치하는 가장 빠르고 쉬운 방법은 Microsoft® 웹 PI(웹 플랫폼 설치 관리자)를 사용하는 것입니다. 웹 PI는 php.net 웹 사이트에서 IIS, FastCGI 및 최신 버전의 PHP 설정을 완전히 자동화합니다. 웹 PI를 사용하면 "웹 플랫폼" 탭으로 이동하여 "프레임워크 및 런타임" 사용자 지정 링크에서 "PHP"를 선택할 수 있습니다. 또는 Windows® Installer를 사용하여 PHP를 설치하거나 압축된(Zip) 파일 설치를 사용하기 위한 지침으로 따르는 지침을 사용합니다.
각 PHP 버전에는 두 개의 빌드가 있습니다. 하나는 스레드로부터 안전하며, 하나는 스레드로부터 안전하지 않은 [NTS] 버전이라고 함)이 아닙니다. 스레드로부터 안전한 버전은 웹 서버 코어가 PHP 엔진을 메모리에 유지할 수 있는 환경을 위해 설계되었으며, 다른 웹 요청에 대해 여러 번의 실행 스레드를 동시에 실행합니다. IIS 및 FastCGI 확장의 아키텍처는 요청을 별도로 유지하는 격리 모델을 제공하여 스레드로부터 안전한 버전에 대한 필요성을 제거합니다. NTS 버전에는 PHP가 여러 스레드를 관리할 수 있는 코드가 없습니다. 따라서 NTS 버전이 불필요한 스레드 안전 검사를 방지하므로 NTS 버전과 비교할 때 NTS 버전을 사용할 때 IIS의 성능이 향상됩니다(FastCGI는 단일 스레드 실행 환경을 보장).
PHP 설치
Windows 기반 컴퓨터에 PHP를 설치하는 두 가지 주요 방법은 Windows® Installer를 다운로드하거나 PHP 웹 사이트에서 Windows Zip 파일을 사용하는 것입니다. 두 방법 모두 PHP가 작동하지만 둘 다 PHP가 제대로 작동하도록 하는 데 필요한 몇 가지 추가 단계가 있습니다.
Windows Installer
Windows Installer 버전은 완전한 PHP 환경을 가동 및 실행할 수 있지만 확장 설치는 혼동될 수 있습니다. 기본적으로 확장은 설치되지 않으며 PHP 설치의 유용성에 부정적인 영향을 줄 수 있습니다. 또는 모든 확장을 설치할 수 있습니다. 이로 인해 일부 확장이 다른 확장과 충돌할 수 있으므로 시스템이 불안정합니다. 일반적으로 Zip 파일 설치를 사용하는 것이 더 쉽습니다.
Zip 파일 설치
Zip 파일 설치를 사용하려면 FastCGI를 사용하여 IIS 7.0 이상에서 PHP 애플리케이션을 호스트하는 지침에 따릅니다. Zip 파일 설치는 Windows Installer 버전에 사용할 수 있는 많은 확장자를 설치합니다. 그러나 Php.ini 파일의 항목이 설정될 때까지 확장이 활성화되지 않습니다.
PHP 이진 파일을 사용하여 스레드로부터 안전하지 않은 최신 Zip 파일 패키지를 다운로드합니다. Windows 이진 파일 아래에서 가장 최신 PHP 스레드로부터 안전하지 않은 Zip 패키지를 클릭하여 PHP 파일을 다운로드합니다.
IIS 서버에서 원하는 디렉터리(예: C:\PHP)로 파일 압축을 풉니다.
php.iniPhp.ini 권장 이름을 바꿉니다.
텍스트 편집기에서 Php.ini 파일을 연 다음 다음과 같이 주석 처리를 제거하고 설정을 수정합니다.
fastcgi.impersonate = 1을 설정합니다.
IIS에서 실행되는 FastCGI는 호출 클라이언트의 보안 토큰을 가장하는 기능을 지원합니다. 이렇게 하면 IIS에서 요청이 실행되는 보안 컨텍스트를 정의할 수 있습니다.cgi.fix_pathinfo = 0 설정
cgi.fix_pathinfo CGI(Common Gateway Interface)에 대한 PATH_INFO/PATH_TRANSLATED 지원을 제공합니다. 이 값을 1로 설정하면 PHP CGI가 해당 경로를 수정하여 사양을 준수하게 됩니다.cgi.force_redirect = 0을 설정합니다.
웹 사이트의 콘텐츠가 있는 폴더 또는 네트워크 경로를 가리키도록 open_basedir 설정합니다.
PHP 확장이 있는 위치를 가리키도록 extension_dir 설정합니다. PHP 5.2.X의 경우 일반적으로 extension_dir = "./ext"입니다.
error_log="C:php_errors.log" 설정
이는 문제 해결에 도움이 될 수 있습니다.해당 줄의 주석을 해제하여 필요한 PHP 확장을 사용하도록 설정합니다. 자세한 내용은 확장 섹션을 참조 하세요.
그림 1 Windows 확장
시작, 설정, 제어판 클릭한 다음 시스템 아이콘(클래스 뷰 사용)을 두 번 클릭합니다.
왼쪽 열에서 고급 시스템 설정 링크를 클릭합니다.
시스템 속성 창에서 고급 탭을 클릭한 다음 아래쪽의 환경 변수 단추를 클릭합니다.
시스템 변수 섹션에서 경로 변수 를 선택한 다음 편집을 클릭합니다. 추가: c:\php 시스템 경로에 추가합니다.
그림 2: 시스템 변수 편집시스템 속성 창 종료될 때까지 확인을 클릭합니다.
시작, 프로그램, 관리 도구 및 IIS(인터넷 정보 서비스) 관리자를 클릭하여 IIS 관리자를 시작합니다.
IIS 관리자에서 왼쪽의 연결 패널에서 서버의 호스트 이름을 클릭합니다.
처리기 매핑 아이콘을 두 번 클릭합니다.
그림 3: IIS(인터넷 정보 서비스) 관리자처리기 매핑작업 패널에서 모듈 매핑 추가를 클릭합니다.
그림 4: 처리기 매핑적절한 텍스트 상자에 다음 정보를 입력한 다음 확인을 클릭합니다.
- 요청 경로: *.php
- 모듈 : FastCGImodule
- 실행 파일: C:\php\php-cgi.exe
- 이름: FastCGI
그림 5: 스크립트 맵 추가
[확인]을 클릭한 다음 [예]를 클릭합니다.
왼쪽 패널에서 서버의 호스트 이름을 클릭한 다음 기본 문서 아이콘을 두 번 클릭합니다.
오른쪽의 [작업] 패널에서 [추가]를 클릭합니다.
index.php를 새 기본 문서 이름으로 입력한 다음 확인을 클릭합니다.
default.php를 새 기본 문서 이름으로 입력한 다음 확인을 클릭합니다.
왼쪽 패널에서 서버의 호스트 이름을 클릭합니다.
오른쪽의 [작업] 패널에서 [다시 시작]을 클릭합니다.
새 텍스트 문서를 만들고 다음 콘텐츠와 같이 c:\inetpub\wwwroot\phpinfo.php 저장합니다.
<?php phpinfo(); ?>이제 PHP 정보 페이지가 표시됩니다 //localhost/phpinfo.php.
그림 6: PHP 정보 페이지
확장
실행 중인 애플리케이션에 필요한 확장을 확인한 다음 설치된 확장만 해당 확장으로 제한하는 것이 중요합니다. 예를 들어 일반적인 오픈 소스 애플리케이션 설치의 경우 다음 확장이 설치됩니다.
- 데이터베이스 확장 - 데이터베이스 엔진에 MySQL을 사용하는 대부분의 오픈 소스 애플리케이션은 php_mysql 또는 php_mysqli 확장을 사용합니다. 새 개발 작업의 경우 이러한 확장 중 하나가 제대로 작동하거나 MySQL 드라이버의 PDO 버전을 사용하는 것이 좋습니다(PDO는 다양한 데이터베이스와 함께 사용할 수 있는 데이터 액세스 추상화 계층을 제공하는 PHP 확장임). 이 추가 추상화 계층은 다양한 개체 데이터베이스 기능 및 컨트롤 집합을 제공합니다. Microsoft® SQL Server(또는 Microsoft SQL Server ® 2008 Express 또는 Microsoft®® SQL Server ® ® 2005 Express Edition과 같은 Express 버전)이 데이터베이스 엔진인 경우 오픈 소스 애플리케이션에 php_mssql 확장을 사용합니다. 새 개발 작업의 경우 SQL 드라이버의 PDO 버전을 사용합니다.
- 이미지 처리 확장 - 이미지 작업을 가능하게 하는 많은 오픈 소스 애플리케이션이 GD2 확장을 활용합니다. php_gd2. 여기에는 다양한 좋은 기본 이미지 조작 API(애플리케이션 프로그래밍 인터페이스)가 있습니다. 일부 애플리케이션은 ImageMagick 애플리케이션 및 라이브러리를 사용합니다. 또한 최신 디지털 카메라가 이미지 내에 저장하는 확장된 정보를 사용하기 위한 php_exif 라이브러리도 있습니다.
- 국제화 및 지역화 확장& mdash- i18n 및 l10n에 가장 일반적으로 사용되는 두 확장은 php_mbstring (멀티바이트 문자열) 및 php_gettext (네이티브 언어 지원)입니다. 대부분의 오픈 소스 애플리케이션은 이 중 하나 또는 둘 다를 사용합니다.
- 웹 서비스 확장 - 원하는 서비스에 따라 웹 서비스 확장을 선택합니다. PHP의 경우 SOAP 확장이 널리 사용됩니다. XML-RPC 확장은 SOAP 및 기타 서비스와 함께 사용되는 경우가 많습니다.
PHP.INI 파일 설정
Php.ini 파일은 PHP에 구성 및 환경 정보를 제공합니다. 다음은 PHP가 Windows에서 더 잘 작동하는 데 도움이 되는 Php.ini 파일에 대한 여러 설정입니다.
필수 설정
- extension_dir = < PATH TO EXTENSIONS> extension_dir PHP 확장이 저장된 디렉터리를 가리킬 필요가 있습니다. 경로는 정규화(예: C:\PHP\ext)이거나 상대 경로(예: .\ext)일 수 있습니다. Php.ini 파일에서 아래쪽으로 지정된 확장명은 extension_dir 있어야 합니다. 지정된 확장이 extension_dir 없는 경우 PHP는 스크립트 실행 시작 시 경고 메시지를 표시하고, 기능 누락으로 인해 애플리케이션에 오류가 표시될 수 있습니다.
- extension = xxxxxx.dll 사용하도록 설정된 각 확장에 대해 시작 시 로드할 extension_dir 확장이 필요한지 PHP에 알려주는 해당 extension= 지시문입니다.
- log_errors=On PHP 오류는 PHP 오류 로깅 기능을 통과할 수도 있습니다. 파일 또는 서비스(예: syslog)에 오류를 보내는 데 사용할 수 있으며 아래에 설명된 error_logdirective 사용할 수 있습니다. IIS에서 실행하는 경우 유효한 error_log를 통해 log_errors를 사용하도록 설정해야 합니다. 그렇지 않으면 FastCGI는 시작 메시지(양성일 수 있음)를 오류 조건으로 간주하여 HTTP 500 반환 오류 코드를 브라우저에 생성합니다.
- error_log=<path_to_error_log_file" error_log PHP 오류 로그가 저장된 파일의 정규화된 경로 또는 상대 경로를 지정해야 합니다. 이 파일은 IIS 서비스에 대해 쓰기 가능해야 합니다. 이 파일의 가장 일반적인 위치는 다양한 임시 디렉터리(예: C:\inetpub\temp\php-errors.log)에 있습니다. 이렇게 하면 IIS에서 사용할 수 있는 위치에 로그가 배치되고 PHP 애플리케이션이 실행 중인 위치에 로그가 가깝게 유지됩니다.
- cgi.force_redirect = 0 이 지시문은 IIS에서 실행하는 데 필요합니다. 다른 많은 웹 서버에서 필요한 디렉터리 보안 기능입니다. 그러나 IIS에서 사용하도록 설정하면 WINDOWS에서 PHP 엔진이 실패합니다.
- cgi.fix_pathinfo = 1 이렇게 하면 PHP가 CGI 사양에 따라 실제 경로 정보에 액세스할 수 있습니다. IIS FastCGI 구현에는 이 확장 집합이 필요합니다.
- fastcgi.impersonate = 1 IIS의 FastCGI는 호출 클라이언트의 보안 토큰을 가장하는 기능을 지원합니다. 이렇게 하면 IIS에서 요청이 실행되는 보안 컨텍스트를 정의할 수 있습니다.
- fastcgi.logging = 0 IIS에서 FastCGI 로깅을 사용하지 않도록 설정해야 합니다. 사용하도록 설정된 상태로 두면 모든 클래스의 메시지가 FastCGI에서 오류 조건으로 처리되므로 IIS에서 HTTP 500 예외를 생성합니다.
선택적 설정
- max_execution_time=## 이 지시문은 지정된 스크립트를 실행하는 데 걸리는 최대 시간을 설정합니다. 기본값은 30초입니다. 일괄 작업을 처리하는 데 시간이 더 필요한 애플리케이션도 있습니다. 원격 위치에서 여러 이미지를 로드하는 Gallery2의 경우를 예로 들 수 있습니다. 그러나 실행 시간은 300초보다 큰 값으로 설정하지 않는 것이 좋습니다. 연결의 다른 부분에서는 이렇게 긴 실행 시간을 지원하지 못하는 경우가 종종 있기 때문입니다.
- memory_limit=###M PHP 프로세스에 사용할 수 있는 메모리 양(MB)입니다. 기본값은 128MB이며 대부분의 PHP 애플리케이션에 적합합니다.
- display_errors=끄기 이 지시문은 웹 서버로 반환되는 스트림에 오류 메시지를 포함할지 여부를 결정합니다. 켜진 경우 PHP는 error_reporting 지시문으로 정의된 오류 클래스를 오류 스트림의 일부로 IIS로 다시 보냅니다. 여러 오픈 소스 애플리케이션은 앞에 @가 붙은 명령을 실행하여 오류 보고를 바이패스합니다. 이렇게 하면 애플리케이션에서 오류 처리를 제어할 수 있습니다.
- 메일 함수 PHP는 웹 서버와 동일한 시스템에 있는 SMTP 서버를 통해 아웃바운드 메일을 보내도록 기본적으로 구성됩니다. 대부분의 Windows 설치에는 일반적으로 별도의 시스템에 웹 및 메일 서버가 있습니다.
PHP 세션 상태 사용
Windows® 탐색기에서 PHP 설치 디렉터리에 세션 하위 디렉터리를 만듭니다.
세션 디렉터리를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
보안 탭에서 편집을 클릭합니다.
추가를 클릭하고 선택할 개체 이름을 입력할IIS_IUSRS 입력합니다.
확인을 클릭합니다.
권한 수정 확인란을 선택하고 확인을 클릭합니다.
그림 7: 세션 폴더에 대한 권한세션 속성 창에서 확인을 클릭합니다.
PHP 설치 디렉터리에서 php.ini 열고 session.save_path 설정을 세션 하위 디렉터리로 설정합니다.
session.save_path = "C:\php\session"파일을 저장한 후 닫습니다.
시작을 클릭한 다음 명령 프롬프트를 선택합니다.
runas /user:administrator cmd.exe 입력하여 상승된 권한을 사용하도록 설정합니다.
명령 프롬프트에 iisreset 을 입력한 다음 Enter 키를 누릅니다.
그림 8: IISRESET 명령PHP는 기본적으로 파일 기반 세션 상태를 사용합니다. 쿠키 또는 URL 세션을 사용해야 하는지 여부, 첫 번째 요청에서 세션이 생성되는지 또는 명시적으로 만들어야 하는지를 포함하여 다양한 추가 세션 설정을 수정할 수 있습니다.
Windows 탐색기를 사용하여 세션 상태를 테스트하고 으로 이동합니다 C:\inetpub\wwwroot.
폴더를 만들고 이름을 phpapp으로 바꿉니다.
phpapp 디렉터리에 session.php를 만듭니다.
다음을 붙여넣습니다.
<?php session_start(); $counter = isset($_SESSION['counter']) ? $_SESSION['counter'] : 0; $counter++; print "You have visited this page $counter times during this session"; $_SESSION['counter'] = $counter; ?>파일을 저장한 후 닫습니다.
Internet Explorer를 시작하고 //localhost/phpapp/session.php.
그림 9: 세션 상태 사용카운터가 1인지 확인합니다.
다시 요청 //localhost/phpapp/session.php 하거나 F5 키를 누릅니다.
그림 10: 세션 상태 사용카운터가 2인지 확인합니다.
추가 정보
- Windows 학습 키트의 PHP입니다.
- Windows Server 2008에 PHP 설치
- IIS7의 PHP입니다.
- Server Core에 IIS 7.5 + FASTCGI + PHP 배포