레이블이 ini인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ini인 게시물을 표시합니다. 모든 게시물 표시

2009년 11월 11일 수요일

PHP.INI 환경 변수 설정하기 2

출처 :: 슬라임의 실험 ( http://slime.pe.kr/tc/67 )

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


## 준비한 파일
## http://kr2.php.net/downloads.php
## Windows Binaries > PHP 5.2.5 zip package
## Windows Binaries > PECL 5.2.5 Win32 binaries


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:PHPextrasbrowscap.ini

## 설치하지 않음

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

session.save_path=C:PHPSessions
## session.save_path=D:PHPSessions
## 폴더 생성하고 쓰기권한 설정

2.4 PHP 확장 라이브러리 설정

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

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

"C:PHPextension"
## "D:PHPextension"


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에 복사해서 여기저기 퍼져 있으면 추후 업그레이드나 삭제시 잊어버리게 된다.

## 업그레이드등 효율적인 관리를 위해 b 방법선택함
## Windows PATH(윈도우 환경변수) 내컴퓨터/고급/환경변수/시스템변수에서
## PATH 변수 값에 D:PHP 를 추가
#### %SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;D:Program FilesMicrosoft SQL Server90Toolsbinn;D:PHP

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

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

HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath = C:PHP

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREPHP]
"IniFilePath"="C:\PHP"

## 레지스트리 편집기에서 직접 해당키값과 이름 경로등을 새롭게 생성 수동입력함
## 키이름 PHP, 값이름 IniFilePath, 값데이터 D:\PHP

3. IIS에 PHP 설정하기

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

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

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

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

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

역시 .php 확장에 대한 실행경로는 php5isapi.dll 을 지정해 주며, 동사에는 GET, POST, HEAD 만 허용해 준다. 굳이 많이 허용을 해줘봤자 보안에 구멍만 만들어 줄 뿐이다.
## inetmgr/기본웹사이트/홈디렉토리/구성/
## inetmgr/기본웹사이트/문서/기본콘텐츠/ index.php 추가

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_) 이 쓰기권한 정도의 권한을 지정해 준다.

2009년 11월 10일 화요일

PHP.INI 환경 변수 설정하기

출처 :: 꿈꾸는 섬 ( http://blog.daum.net/orangeville/17448464 )


* MissFlash의 리눅스 유용 명령어 목록
php 환경설정(php.ini) : [Language Options]
engine = On : Apache에서 PHP 스크립트 언어 엔진 적용(Off로 설정시 PHP파일을 보여주지 못하고 다운로드하게 됨)
zend.ze1_compatibility_mode = Off : zend 엔진 버전1의 호환모드 설정
short_open_tag = On : <? 태그 사용 허용(Off로 설정시 <?php, 와 <script> 태그만 인식)
asp_tags = Off : ASP 스타일의 <%, %> 태그 사용여부 설정
precision = 12 : 부동소수점의 유효 자리수 설정
y2k_compliance = On : 2000년 호환모드로 설정
output_buffering = Off : 모든 파일의 출력 버퍼링 활성화 여부 설정(구체적인 숫자 입력시 출력 버퍼링을 특정 사이즈로 제한)
;output_handler = : 스크립트의 모든 출력을 특정 함수를 통해 할 수 있음
zlib.output_compression = Off : zlib을 사용해 페이지를 압축할 것인지 설정
;zlib.output_compression_level = -1 : 압축 레벨 설정
;zlib.output_handler = : zlib.output_compression을 활성화할 경우, 추가 출력 핸들러를 지정할 수 없음
implicit_flush = Off : On 설정시 print(), echo() 및 각 HTML 블록의 뒤에 flush()함수를 부르는 것과 동일하게 작용(성능저하 유발)
unserialize_callback_func = : unserialize 중에 정의되지 않은 클래스를 작성해야 할 경우, 콜백 함수를 호출(정의되지 않은 클래스를 작성해야 할 때마다 호출)
allow_call_time_pass_reference = On : 함수 사용시 변수를 강제적으로 참조하는 것 금지


php 환경설정(php.ini) : [Safe Mode]
safe_mode = Off : 안전모드 사용여부 설정
safe_mode_gid = Off : 파일이 열릴 때, UID 비교검사 수행(On 설정시 GID 비교검사 수행)
safe_mode_include_dir = : 지정한 디렉토리 및 하위 디렉토리의 파일을 include 하는 경우, UID/GID 검사 미수행
safe_mode_exec_dir = : (안전모드에서) system() 및 시스템 프로그램을 실행하는 함수의 경로(이 디렉토리에 없으면 함수를 실행할 수 없음)
safe_mode_allowed_env_vars = PHP_ : (안전모드에서) 지정된 문자로 시작하는 환경변수만 변경 가능
safe_mode_protected_env_vars = LD_LIBRARY_PATH : putenv()로 변경할 수 없는 환경변수 설정
;open_basedir = : 안전모드와 관계없이 PHP가 열 수 있는 디렉토리 설정
disable_functions = : 특정 함수 사용 금지 설정
disable_classes = : 특정 클래스 사용 금지 설정
;highlight.string = #DD0000 : 문법의 하이라이트 표시 설정(string, comment, keywork, bg, default, html 설정 가능)
;ignore_user_abort = On : 클라이언트가 연결을 끊었을 때, 스크립트 수행을 중단한 것인지 설정(기본값은 스크립트 중단)
;realpath_cache_siae = 16k : realpath 캐쉬 양 설정
;realpath_cache_ttl = 120 : 캐쉬의 유효기간을 초단위로 설정
expose_php = On : PHP가 해당 서버에 인스톨되고, 사용되고 있다는 내용 알림 설정(On 설정시 내용 알림)


php 환경설정(php.ini) : [Resource Limits]
max_execution_time = 30 : 스크립트 최대 실행시간(초단위) 설정
max_input_time = 60 : POST, GET, 파일업로드 등의 입력 데이터를 받아들이는 최대시간(초단위) 설정
memory_limit = 128M : 스크립트가 사용할 수 있는 최대 메모리양 설정


php 환경설정(php.ini) : [Error handling and logging]
error_reporting = E_ALL & ~E_NOTICE : E_NOTICE를 제외한 모든 에러 출력(다음의 항목들이 사용 가능함, E_ALL1, E_ERROR2, E_RECOVERABLE_ERROR3, E_WARNING4, E_PARSE5, E_NOTICE6, E_CORE_ERROR7, E_CORE_WARNING8, E_COMPILE_ERROR9, E_COMPILE_WARNING10, E_USER_ERROR11, E_USER_WARNING12, E_USER_NOTICE13)
display_errors = On : 에러 표시 설정(보안상 이 기능 대신 error_log를 사용할 것을 권장)
display_startup_errors = Off : PHP 시작시 에러 미표시 설정
log_errors = Off : 로그파일에 에러로그 기록여부 설정
ignore_repeated_errors = Off : 반복된 에러의 기록여부 설정(Off 설정시 반복 에러 기록 안함)
track_errors = Off : $php_errormsg에 마지막 에러/경고 메시지 저장 여부 설정
;html_errors = Off : 에러 메세지에 HTML 태그 추가여부 설정(Off 설정시 HTML 태그 미추가)
;error_prepend_string = "<font color=ff0000>" : 에러 메세지 앞에 출력하는 라인 설정
;error_append_string = "</font>" : 에러 메세지의 뒤에 출력하는 라인 설정
;error_log = filename : 지정된 파일에 에러 기록
;error_log = syslog : syslog에 에러 기록


php 환경설정(php.ini) : [Data Handling]
;arg_separator.output = "&" : PHP가 생성한 URL 인자를 구분하는 구분자 설정

;arg_separator.input = ";&" : PHP가 URL에서 변수를 분리하는데 사용하는 구분자 설정
variables_order = "EGPCS" : EGPCS14 변수의 파싱순서 설정(GP로 설정시 GET 변수는 같은 이름의 POST 변수에 덮어씌워짐)
register_globals = Off : 입력 데이터의 글로벌 변수 등록여부 설정(Off 설정시 $var 대신 $_REQUEST["var"], $_GET["var"], $_POST["var"] 등으로 써야 함 - 권장)
register_long_arrays = On : $HTTP_*_VARS 형태의 예약변수 등록 여부 설정(Off 설정시 $HTTP_GET_VARS 대신 $_GET 등의 자동 전역배열을 사용함 - 권장)
register_argc_argv = On : argc 및 argv 변수의 사용여부 설정
post_max_size = 8M : POST 데이터가 허용하는 최대 사이즈 설정(큰 파일 업로드시 post_max_size가 upload_max_filesize보다 커야함)
magic_quotes_gpc = On : GET/POST/Cookie의 입력 데이터에 포함된 작은 따옴표, 큰 따옴표, 역슬래쉬, NULL은 자동으로 역슬래쉬로 이스케이프할지 설정
magic_quotes_runtime = Off : DB나 텍스트 파일에 포함된 작은 따옴표, 큰 따옴표, 역슬래쉬, NULL을 자동으로 역슬래쉬로 이스케이프할지 설정
magic_quotes_sybase = Off : 작은 따옴표를 \' 대신 ''로 변환할지 설정(On 설정시 ''로 변환)
auto_prepend_file =, auto_append_file = : PHP 문서 전후에 추가할 파일 설정
default_mimetype = "text/html", default_charset = "utf-8" : Content-type: 헤더로 출력할 문자 인코딩 설정
;always_populate_raw_post_data = On : 항상 $HTTP_RAW_POST_DATA 변수를 선언할지 설정


php 환경설정(php.ini) : [Paths and Directories]
;include_path = ".:/php/includes" : require(), include(), fopen_with_path() 함수가 파일을 찾는 디렉토리 목록 설정
doc_root = : PHP 루트 디렉토리 설정(안전모드 설정시 루트 디렉토리 밖의 파일은 사용할 수 없음)
user_dir : PHP 파일을 사용하는 유저의 홈 디렉토리(public_html) 이름 설정
extension_dir = "/usr/local/server/php/modules" : 확장모듈 디렉토리 설정
extension = mysqli.so ; : PHP가 시작할 때 읽어들일 모듈 설정
enable_dl = On : dl() 함수를 유효하게 할 것인지 설정
; cgi.force_redirect = 1 : 대부분의 웹서버에서 PHP를 CGI로 사용할 때 보안을 위해 설정(기본값 On)
; cgi.redirect_status_env = ; : ?
;cgi.rfc2616_headers = 0 : PHP가 HTTP 응답코드를 보낼때 사용할 헤더 설정(0 설정시 Status: 헤더를, 1 설정시 RFC 2616 호환 헤더 전송)


php 환경설정(php.ini) : [File Uploads]
file_uploads = On : 파일 업로드 허가여부 설정
;upload_tmp_dir = : HTTP로 파일 업로드시 임시 작업 디렉토리 설정(미 지정시 시스템 디폴트 디렉토리15가 사용됨)
upload_max_filesize = 2M : 업로드 파일의 최대 사이즈 설정


php 환경설정(php.ini) : [Fopen wrappers]
allow_url_fopen = Off : 파일 액세스시 외부사이트 파일을 불러올 수 있는지여부 설정(보안상 Off로 설정할 것을 권장함)
;from="admin@myhome.com" : 익명 FTP의 패스워드 설정
;user_agent = "PHP" : PHP가 전송하는 유저에이전트 설정
default_socket_timeout = 60 : 소켓기반 스트림의 기본 시간제한 설정
;auto_detect_line_endings = Off : fget(), file()로 읽은 데이터의 줄바꿈 방식 선택여부 설정(On 설정시 유닉스, MS-DOS, 매킨토시 방식 중 어떤 것을 사용할 것인지 검사)