GyuHa.com

1. PHP 설치

1.1 최신 버젼인 PHP 5.1.2 버젼을 다운로드 : http://www.php.net/downloads.php

다운로드를 할때, 버젼은 "Collection of PECL modules for PHP 5.1.2 " 을 다운로드를 한다. PECL은 PHP의 광범위한 확장 라이브러리 모듈을 제공한다 한다.

msi 인스톨러보다는, zip 압축을 다운받기를 바람..

확장라이브러리는 http://pear.php.net/packages.php 에서 필요한 수많은 모듈을 다운로드 할수있다.

블로그중에, PECL 관련 포스트도 참고해 보기 바란다.
http://blog.naver.com/jegom?Redirect=Log&logNo=120004156186

1.2 php.ini-recommand 를 php.ini 로 변경

압축을 푼 PHP 디렉토리에서, php.ini* 로 되어 있는 파일은, PHP에서 권장하는 설정값이 적용되어 있는 파일이다.

2. PHP 환경설정

2.1 php.ini에서 cgi.force_redirect 값이 0 인지 확인.

2.2 browscap.ini 파일 설치하기

꼭 설치할 필요는 없다. 다만, PHP에서 브라우져 특성에 따라 최적의 스크립트 작동을 하게 된다.

php_browscap.ini는 http://www.garykeith.com/browsers/downloads.asp 에서 다운로드가 가능하며,  PHP 설치디렉토리의 extras에 복사해 넣고, php.ini에서 browscap 에 다음과 같이 경로를 지정해 준다.

browscap=C:\PHP\extras\browscap.ini

2.3 php.ini 에서 세션파일 저장 경로 설정.

session.save_path=C:\PHP\Sessions

2.4 PHP 확장 라이브러리 설정

추가적인 확장모듈을 설치하고자 한다면 다음 웹사이트를 방문해 보기 바란다.
http://ca3.php.net/manual/en/install.windows.extensions.php

php.ini 에서 extension_dir 확장모듈 경로를 지정해준다.

 "C:\PHP\extension"

extension=php_mbstring.dll
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_curl.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
;extension=php_exif.dll
extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_ifx.dll
extension=php_iisfunc.dll
extension=php_imap.dll
extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_tidy.dll
extension=php_ffi.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
;extension=php_yaz.dll
extension=php_zip.dll

위와 같이 on 인 확장모듈은 굳이 on을 하지 않아도 된다. 그러나 on을 해도 대부분 오류가 없다. 다 off 해도 좋은나, 예로 mssql을 이용한다면 php_mssql.dll 은 on을 해야 한다.

2.5 php dll 파일 경로설정.

다음 2가지 방법중 1가지를 하면 된다. 대부분 첫번째 a 방법을 선택한다.

a. C:\PHP의 php-dll 이 아닌 모든 dll 파일을 System32에 복사한다. 또는,

b. Windows PATH 경로에서 "C:\PHP" 를 추가해 준다.
이 방법은 추후 업그레이드나 삭제를 훨씬 쉽게 한다. System32에 복사해서 여기저기 퍼져 있으면 추후 업그레이드나 삭제시 잊어버리게 된다.

2.6 레지스트리에 PHP 설치경로 추가. 

이 설정은 php의 환경설정을 지정된 경로에서 찾게 한다. 굳이 php.ini를 Windows 디렉토리에 복사해 넣을 필요가 없다.

HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath = C:\PHP

다음을 텍스트파일에 .reg 확장자로 저장후 실행하면 쉽게 적용된다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
"IniFilePath"="C:\\PHP"

3. IIS에 PHP 설정하기

3.1 IIS의 웹서비스 확장에 추가한다.

확장 이름에는 "PHP ISAPI Extension" 를 추가하고 확장모듈 dll을 PHP 설치디렉토리의 php5isapi.dll 파일을 지정한다. 그런다음에 허용설정을 해준다.

php를 실행하는 방법은 지금과 같이 ISAPI 모듈을 이용하는 것과 php-cgi.exe 를 이용하는 방법이 있다. 되도록이면, ISAPI 모듈을 이용하는 것이 좋다.

*php를 적용하는 방법에는 2가지가 있다. 웹 루트에 적용하는 것과 특정 웹사이트에 적용하는 방법이 있으니 적용코자 하는 경우에 따라 선택하면 된다.

3.2 .php 확장자를 추가해 준다.

역시 .php 확장에 대한 실행경로는 php5isapi.dll 을 지정해 주며, 동사에는 GET, POST, HEAD 만 허용해 준다. 굳이 많이 허용을 해줘봤자 보안에 구멍만 만들어 줄 뿐이다.

3.3 IIS를 재시작 한다. 만약 Window PATH 에 적용했다면 리붓팅을 해준다.

4. 웹페이지 테스트

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
  <!-- testing sessions -->
  <?php session_start(); ?>
 
  <!-- testing browscap.ini -->
  <?php
   echo $_SERVER['HTTP_USER_AGENT'] . "<br/><br/>";
   $browser = get_browser(null, true);
   print_r($browser);
   echo "<br/><br/>";
  ?>
 
  <!-- a general PHP test -->
  <?php phpinfo(); ?>
 </body>
</html>

test.php 파일에 다음과 같은 코드로 php 실행 여부 및 환경설정값을 확인할 수 있다.

5. 트러블슈팅 

5.1 작동하지 않는다면,..

해당 웹사이트의 ISAPI 필터에 필터이름 "PHP" 에 실행파일을 php5isapi.dll 을 지정해 줘 본다. 물론 등록후에는 IIS를 재시작 해야 만이 필터가 로드된다.

ISAPI 필터에 등록되면, 웹서버의 성능상 그리 권장사항은 아니다. 필터가 많을수록 웹요청에 대한 필터 처리를 통과해야 하기 때문이다.

5.2 browscap.ini 에서 오류 발생시...,

php.ini에서 browscap의 실제 경로를 다시 확인하여 지정해줘 본다.

5.3 401 권한오류 또는 403 퍼미션 거부 오류.

이 부분은 ISAPI 모듈이 아니라, CGI(php-cgi.exe)를 이용한 경우가 그렇다. cgi를 이용한다면 해당 웹사이트를 실행하는 어플리케이션 풀의 실행 계정이 PHP 설치경로 권한이 있는지 확인해 본다.

5.4 세션이 저장되지 않는다.,,,

세션은 앞서 지정했던 php.ini 파일에 지정한 경로에 인터넷게스트계정(IUSR_) 이 쓰기권한 정도의 권한을 지정해 준다.

Comment +0