먼저..
윈도우2003서버는 윈도우2000서버와는 달리 인터넷 정보 서비스에 보면 웹 서비스 확장 이라는 항목이 더 붙어있다. 확장된 기능이겠지만 왠지 불편하게 느껴지는 기능이기도 하다.. 윈도우2000서버에서 asp는 별 신경쓰지 않아도 잘 돌아갔으나 2003에서는 바로 실행이 되지 않는 듯 하다. html이나 htm은 실행이 되지만 asp는 파일을 찾을 수 없다고 나온다. 이 것을 해결하기 위해 웹 서비스 확장 목록을 보면 Active Server Pages와 ASP.NET v1.14322 항목이 금지되어 있다는 것을 볼 수 있다. (왜 디폴트로 금지로 해놨는지 모르겠다.. 혹 윈도우 설치할 때 설정해주는 항목이 있나???)
이 부분을 허용으로 해주면 asp 실행이 될 것이다. 그리고 서비스팩1을 설치했다면 자동적으로 방화벽이 실행이 된다. 이 곳에서 해당 웹서버 포트를 허용 시켜줘야 웹에 접속 가능하다.
들어가기 전에..
어째서인지 윈도우2003서버에서 윈도우용 APM 이 설치가 되지 않았다. 버전은 4.0과 5.0 이었는데 5.0은 MFC관련 dll이 없다고 설치가 안되고, 4.0은 무슨 파일 다운로드 실패했다고 나오면서 종료되었다. 아파치 깔고 php또 설정 잡아주기 귀찮아서 그냥 IIS에 php를 붙여보기로 했다.
php 설치 하기..
1)
먼저 php4를 다운받아서 zip 파일 통째로 아무데나 놓고 압축을 풀자. 따로 설치는 필요없다. 풀어놓기만 하면 된다.
2)
압축 푼 php 폴더에 보면 php4ts.dll , php4ts.lib 파일 두 개가 있는데 이 것을 windows에 system32 폴더에 복사해 넣는다.
3)
dlls 폴더에 있는 모든 파일을 마찬가지로 windows->system32 폴더에 복사해 넣는다. 대략 13개 정도 된다.
4)
php 폴더에 php.ini-dist 파일이 있는데 php.ini로 이름을 바꾸고windows 폴더에 넣는다. php.ini에서도 세팅할 사항이 있는데 그 것은 아래에 설명하겠다.
IIS에서 php 세팅하기
php를 설치했으니까 이제 IIS에서 php를 사용할 수 있도록 해보자. 기본적으로 IIS가 php라는 확장자를 인식 했을 때 php 스크립트가 실행될 수 있게 하는 과정이다.
1)
기본 웹 사이트 등록정보에 보면 ISAPI 필터 목록이 있다. 여기서 추가를 누르면 필터를 등록하는 창이 나오는데 필터이름에 php, 실행 파일에 phpsapiphp4isapi.dll 파일을 선택한 후 확인
2)
홈 디렉토리 목록에서 구성 버튼을 누르면 확장자에 대한 정보가 나오는데 추가를 눌러 .php 를 추가시켜준다. 실행파일은 위와 마찬가지로 php4isapi.dll 이다. (필요하다면 php3 같은것도 추가해줘도 된다. 물론 실행 파일은 같다)
3)
문서 목록에서 index.php를 추가시켜 준다.
4)
IIS를다시 시작시켜 준다.
이렇게 하면 아까 추가시켜줬던 ISAPI 목록에서 php 상태에 위로 향한 녹색 화살표가 나오면 성공, 빨간 아래 화살표가 나오면 실패다..실패면 다시 과정을 실행해보자
더 해줘야 할 것
기본적으로 여기 까지는 윈도우2000서버에서의 과정과 똑같다. 2000서버에서는 여기 까지 하면 IIS가 php를 인식하기 시작한다. 하지만 윈도우2003은 2000과 다르다..2000과는.. 위에서 얘기했던 웹 서비스 확장 목록을 가보자. 거기서 오른쪽 마우스 버튼을 누르면 새 웹서비스 확장이라는 것이 나오는데 여기서 php에 대하여 추가를 시켜줘야 한다. 확장 이름에 php, 필요한 파일에는 php4isapi.dll을 추가시켜 주자. 추가 후 왠지 찜찜하니까 IIS 다시 한번 재시작 해주면 php가 실행이될 것이다.
* php.ini 에서 해주면 좋은 것들
나는 기본적으로 해주는 것은 딱 세가지 있다. 하나는 php에서 mssql을 접속할 수 있게 해주는 것과 php4에서 php3과 같은 글로벌 변수를 사용할 수 있게 해주는 것, 마지막으로 iconv를 사용할 수 있게 해주는세팅이다.
1)
mssql관련 세팅만 얘기하자면, php에서 mssql을 사용할 수 있게 하려면
extension_dir="c:phpextensions"
extension=php_mssql.dll
extension_dir에는 php폴더 안의 extensions 폴더의 경로를 써주면 되는데 반드시 따옴표 안에 경로를 써주어야 한다. php_mssql.dll 파일은 당연히 extensions 폴더안에 있어야 한다. 이 파일이 있어야 mssql_connect 라던가 mssql_fetch_row 같은 mssql 관련 함수를 사용할 수 있다.
2)
윈도우2000 서버에서는 여기까지 해주면 php에서 mssql 접속이 안된다. 하지만 2003에서는 또 안된다.. mssql_connect 함수는 실행되지만 접속 자체가 안된다. 그러므로 모듈의 문제는 아니다. 문제는 ntwdblib.dll 파일이 버전이 맞지 않아서 이다. (혹은 이 파일이 없어서 이다.) 이 파일은 위에 php설치하기 과정중 3)번 과정인 dlls 폴더에 있는 것을 system32 폴더에 카피할 때 딸려서 카피되는 것이다. 만일 ntwdblib.dll 파일이 system32 폴더 안에 있는데도 접속이 되지 않는다면 DB서버가 있는 곳의 ntwdblib.dll 파일로 교체 하면 접속이 될 것이다. ntwdblib.dll 버전이 7.00~ 이면 접속이 안되고 새 버전이 8.00~ 버전으로 교체 하면 접속이 되는 듯 하다.
여기까지 하면 윈도우2003서버에서 IIS 위에서 mssql에 접속 가능한 php를 만날 수 있을 것이다. 현재 윈도우2003서버를 사용하고는 있지만 아직 2000서버에 비해 좋은 점은 모르겠다..보안이 더 뛰어난거 같긴한데 오히려 그런점이 좀 귀찮은 감이;;