(1) PHP : “short_open_tag” 이슈
short_open_tag는 “<? PHP코드 ?>”라는 PHP 시작 선언자와“<?php PHP코드 ?>” 시작 선언자를 사용할지 여부를 결정하는 설정입니다. 이 설정이 APM 특정 버전이나 재배포 패키지에서 on으로 되어 있어 “<?” 시작 선언자를 사용 가능하게 되어있으나, PHP 공식 버전에서는 off로 되어 있기 때문에 발생합니다.(PHP 공식 가이드와 차이가 있을 수 있습니다.)
해결방안
php.ini 파일의 해당 short_open_tag 설정을 on으로 시켜 주시면 해결되며, 코드를 이용하실 경우 권한 등에 문제가 없다면 ini_set('short_open_tag','On'); 처리도 가능합니다. 소견으로, 쉽지 않겠습니다만 장기적인 PHP 어플리케이션 호환성을 위해 코드를 수정하시는 것도 한 방법일 것입니다.
(2) PHP : “error_reporting” 설정 관련 PHP 오류
phpschool의 강좌 게시판에 올려주신 질문 인데요. 마찬가지로, PHP의 공식 버전은 이 error_reporting 설정이 E_ALL로 되어 있습니다.
”error_reporting = E_ALL” 이렇게 기본 설정이 되어 있으실 거에요. E_ALL 설정은 대단히 엄격해 변수 선언 후 사용 여부 까지 체크하게 되어 있을 수 있습니다. 마찬가지로, 공식버전과 달리 APM 특정 버전이나 사용자 패키지는 너무 엄격하다고 판단해서인지 설정이 바뀌어져 있을 수 있는데요. 이경우 아래처럼 설정하시면 해결 가능합니다.
해결방안
php.in 파일의 설정을 ”error_reporting = E_ALL ^ E_NOTICE” 로 변경 하시면 됩니다.
또는, 코드로 처리하실 경우는 PHP 시작파일 최상단에
@error_reporting(E_ALL ^ E_NOTICE);
코드를 삽입해 주시면 됩니다.
(3) MySQL : “sql-mode”가 “STRICT_TRANS_TABLES” 로 설정되어 있어 SQL 쿼리시 오류가 발생
MySQL을 공식 사이트가 아닌 특정 버전의 APM이나 사용자 설정 패키지를 이용하실 경우와 마찬가지 이슈 입니다. 공식 사이트에서 다운로드 받으신 MySQL의 my.ini 파일의 기본 “sql-mode”가 “STRICT_TRANS_TABLES”로 설정되어 있기 때문에 삽입 처리 등에 제약이 존재하게 됩니다. 예를들면, a1 이라는 정수형 필드가 있다고 할때 a1 필드에 $a1 이라는 변수값을 insert 하거나 update 할 경우 $a1 값이 빈값(empty value)이거나 형(type)에 맞지 않을 경우 - 정수형 필드에 문자열을 입력하거나 하는 경우, 또는 할당된 범위를 초과할 경우 등등.. - 에러를 뱉어내게 됩니다.
해결방안
마찬가지로, my.ini 파일의 STRICT_TRANS_TABLES 값을 수정하거나 아래 방법으로 쿼리 실행 구문 앞에 sql_mode 처리를 이요하시면 됩니다.
mysql_query("sql_mode=''",$DB_CONNECT);
http://www.sqler.com/257700
1) 시작 - 제어판 - 시스템 및 보안 - Windows Update 메뉴를 사용하여 중요 업데이트를 설치합니다.
IIS 를 설치하는 데는 시스템 재시작이 필요하지 않지만 중요 업데이트 설치 후에는 필요에 따라 시스템 재시작이 필요할 수 있습니다. 보안을 위해서 이와 같은 방법으로 정기적으로 보안 업데이트를 적용하는 것을 권장합니다.
이것으로 쉽게 IIS7 설치가 완료 되었습니다. IIS 7.0 에서는 이외에도 Administration Pack 1.0 을 추가 설치하였습니다만 IIS 7.5 에서는 이미 확장 기능(FastCGI 설정, 요청 필터링, 구성 편집기 등)이 추가되어 있음을 확인할 수 있습니다. 인터넷 정보 관리자를 실행(시작 - 관리도구 - IIS 관리자) 하여 제공되는 기능을 살펴볼 수 있습니다.
[PHP 설치 및 테스트]
다음은 PHP 다운로드 받고 설치하는 과정입니다. PHP 다운로드는 http://www.php.net/downloads.php 사이트를 통해서 Windows Binaries 를 사용해야 합니다.
1. Non-thread-safe zip 패키지 다운로드
웹 사이트에 접속해서 보면 아래 그림과 같이 Windows Binaries 에도 여러 가지 종류의 패키지가 있는 것을 확인할 수 있으며 IIS 7 에서 구동 시 확장 기능 사용과 성능 향상 효과를 위해 5.2.X Non-thread-safe zip package 를 다운로드 받습니다.
2. 패키지 압축 해제
가. 다운로드 받은 파일을 C:\Program Files\PHP 폴더에 압축을 해제합니다.
3. PHP.INI 설정
C:\Program Files\PHP 폴더에 있는 php.ini-recommended 파일을 php.ini 파일로 복사한 뒤 메모장을 통해 아래와 같이 설정을 변경합니다.
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
Cgi.force_redirect = 0
extension_dir = "./ext"
extension=php_gd2.dll
가. fastcgi.impersonate = 1
FastCGI는 클라이언트 호출에 대한 가상 보안 토큰을 지원하며 IIS 환경에서는 1로 설정합니다.
나. cgi.fix_pathinfo = 1
PATH_INFO/PATH_TRANSLATED 를 CGI 환경에서 지원하며 1로 설정할 경우 PHP CGI가 규격에 맞게 경로를 수정합니다.
다. Cgi.force_redirect = 0
일반적으로 웹 서버에서 PHP 를 사용할 때 보안을 제공하기 위해 필요하지만 IIS 환경에서는 사용하지 않는 것을 권장합니다.
라. extension_dir = "./ext"
확장 모듈(extensions) 파일들이 위치한 폴더 경로입니다.
마. extension=php_gd2.dll
GD Graphics library 사용을 위해 활성화합니다.
4. 모듈 매핑 추가
가. 인터넷 정보 서비스 관리자 - 연결 - 서버이름 - 기능보기 - 처리기 매핑
나. 모듈 매핑 추가
1) 요청 경로 : *.php
2) 모듈 : FastCgiModule
3) 실행 파일(옵션) : "C:\Program Files\PHP\php-cgi.exe"
4) 이름 : PHP FastCGI
5) 요청 제한 클릭
가) 요청이 다음에 매핑되는 경우에만 처리기 호출 : 파일 또는 폴더
5. FastCGI 응용 프로그램 풀, 환경 변수 설정
가. FastCGI는 Native PHP 가 리사이클링 되기 전에 Php-cgi.exe 프로세스를 리사이클링(Recycling) 하게 됩니다. '인스턴스 MaxRequests' 속성 변경을 통해 리사이클링 되기 전에 요청 처리 개수를 설정할 수 있습니다.
1) 인터넷 정보 서비스 관리자 - 연결 - 서버이름 - FastCGI 설정
2) php-cgi.exe 편집 - '인스턴스 MaxRequests' : 10000
나. Native PHP 프로세스 리사이클링 속성 변경
1) FastCGI 응용 프로그램 편집창에서 '환경 변수' 속성을 클릭합니다.
2) 추가 - Name : PHP_FCGI_MAX_REQUESTS, Value : 10000
(기본값 : 인스턴스 MaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500)
6. 테스트 웹 사이트 생성
가. 인터넷 정보 서비스 관리자 - 사이트 - 웹 사이트 추가...
나. 웹 사이트 추가
1) 사이트 이름 : PHP Site
2) 실제 경로 : C:\WWW
3) 포트 : 8080
7. PHPINFO.PHP 스크립트 생성
가. 메모장 실행 후 C:\WWW 폴더에 PHPINFO.PHP 파일을 생성하고 아래 스크립트를 입력합니다.
나. 스크립트
<?php
phpinfo();
?>
'Infrastructure' 카테고리의 다른 글
강의자료 (0) | 2011.11.18 |
---|---|
엑셀 워크시트 합치기 (0) | 2011.08.25 |
IIS 6.0에 rewrite mod 적용하기 (0) | 2011.07.27 |
Introduction to IIS 7 Architecture (0) | 2011.07.25 |
windows rsync (0) | 2011.07.25 |