웹 서버와 PHP가 연동되지 않는 경우
게시일: 2006/05/24 | 글쓴이: doa | 21372 번 | 프린트 | 메일


리눅스를 서버 시장의 강좌로 올릴 수 있었던 이유는 여러 가지가 있겠지만 필자는 무엇보다도 강력한 기능을 탑재한 아파치 웹 서버 를 꼽는다. 사실 아파치 는 현존하는 최고의 웹 서버라고 해도 과언이 아니다.



그런데 문제는 아파치 를 설치하는 것이 그리 쉬운 일은 아니라는 점이다. 물론 Windows에서 설치는 큰 어려움이 없지만 Unix에서 PHP, MySQL과 함께 설치하는 경우 난관에 봉착하는 때가 종종 있다. 그런데 Windows 판도 PHP와 연동을 하려고 하면 예상치 못한 일이 종종 발생하곤 한다. 얼마 전 모 업체에 간단한 프로그램을 작성해주면서 이 프로그램을 기동할 수 있는 웹 서버를 올린 적이 있다.

Windows 판은 설치가 쉽기 때문에 아파치 는 쉽게 설치했지만 문제는 PHP와의 연동이 되지 않는 것이었다. DLL과 INI 파일을 시스템 폴더에 복사하고 이벤트 뷰어를 확인해보고 인터넷을 모조리 검색해봤지만 마땅한 원인을 찾을 수 없었다.



혹시 다른 문제일까 싶어서 telnet을 이용해서 RAW 데이터를 웹 서버로 보내 확인해 보면 PHP와 분명히 연동되어 있는 것을 알 수 있다. 그러나 막상 PHP의 동작 여부를 확인하기 위해 간단한 테스트 프로그램을 실행하면 빈 화면이 출력된다. 빈 화면이 출력되는 것은 PHP 코드가 해석되지 않아 <?와 ?> 사이를 하나의 태그로 봤기 때문에 발생한 현상이다.

문제의 원인을 파악하던 중 예전에도 비슷한 일을 경험했다는 것을 깨달았다. 사실 이 문제의 원인은 아주 간단하다. PHP는 보안 때문에 php.ini의 기본 값이 계속 변경되었기 때문에 발생한 현상이었다주1. 따라서 이 문제를 해결하는 방법은 간단하다.

  1. 아파치 Windows 판을 설치한다. 설치는 간단하므로 따로 언급하지 않겠다. 필자가 설치한 파일은 apache_2.0.58-win32-x86-no_ssl.msi로 2.0.58판이다. v2.2.2 판도 설치했지만 이 경우 아파치 가 오류 때문에 시작되지 않았다.
  2. PHP 최신판을 내려받아 임의의 폴더(예: D:\Apache2\PHP5)에 풀어놓는다. 필자가 사용한 파일은 php-5.1.4-Win32.zip이다.
  3. PHP 설치 폴더에서 php.ini-recommendedphp.ini로 이름을 변경한 후 이 파일을 %SystemRoot%에 복사한다주2.
  4. 좋아하는 편집기로 아파치 설정 파일(예: D:\Apache2\Conf\httpd.conf)을 읽은 후 파일 끝에 다음 두 줄을 추가한다주3.
    LoadModule php5_module "<PHP 설치 폴더>/php5apache2.dll"
    	AddType application/x-httpd-php .php .inc
    예:
    LoadModule php5_module "D:/apache2/php5/php5apache2.dll"
    AddType application/x-httpd-php .php .inc
  5. 좋아하는 편집기로 PHP 설정 파일(예: C:\Windows\php.ini)을 연 후 다음처럼 변경한다주4.
    변경전: short_open_tag = Off
    변경후: short_open_tag = On
  6. 아파치 서비스 감시기를 이용해서 아파치 를 다시 시작한다.


이렇게 php.ini 파일을 수정한 후 같은 주소에 다시 접속해보면 그림처럼 phpinfo(); 함수가 정상적으로 실행되는 것을 알 수 있다주5.


추가 정보: Apache의 이름은 A Patch에서 왔다고 한다. 초기 NCSA에서 발표한 웹 서버는 버그가 많아 여러 사람이 이러한 버그를 수정한 패치를 발표했고, 결국 이 패치 그룹에서 이름을 따와 Apache가 됐다고 한다.


주1: 모 기관에 황사 측정 시스템을 납품하면서 기껏 작성한 프로그램이 동작하지 않아 프로그램 설치만 이틀이 걸린 적이 있다. 이때는 register_globals의 기본 값이 On에서 Off로 변경되어 발생한 문제였다.

주2: php.ini-dist 파일을 사용하면 이러한 문제는 발생하지 않는다.

주3: 반드시 끝이 아니어도 상관없다.

주4: 설정 파일을 변경하지 않고 PHP 프로그램을 <?php로 시작해도 된다.

주5: 예로 사용한 웹 서버는 아파치이지만 IIS에서도 같은 현상이 발생한다.


PHP 설정이 변경되지 않는 경우 요즘은 서버를 직접 관리하지 않고 웹 호스팅을 사용하... (12832) 2006-05-24
MS의 위지윅 웹 편집기, Expression Web Designer CTP 사실 필자는 위지윅 HTML 편집기... (7393)2006-05-23

QAOS.com에 게시된지 1년 이상된 자료와 관리자가 공개한 자료는 누구나 제한없이 읽을 수 있습니다.
그러나 QAOS.com의 자료를 퍼가는 것은 금지하고 있습니다.

이 정보가 유용하다고 생각되시면 QAOS.com과 많은 다른 사람들을 위해 퍼가기 보다는 링크로 알려주시기 바랍니다.

세상사는 이야기



RSS 구독 (익명 | 회원 | 강좌 | 포럼)
(C) 1996 ~ 2017 QAOS.com All rights reserved.