[{TableOfContents}]

!!!PHP Install
*[리눅스(fedora, centos)에서 컴파일 설치|PHP_Install_Linux]
*[모니위키 설치|MoniWiki_Install]
!!! php 환경 설정
{{{
gzip압축 & 버퍼링 관련
	output_buffering = Off
	zlib.output_compression = Off

	ob_start("ob_gzhandler");

	http://www.whatsmyip.org/mod_gzip_test/ 
	http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=58182&cwin=1

	http://blog.creorix.com/14

메모리 & 파일 업로드 관련
	파일 업로드 관련 환경 설정
	file_uploads = On			파일 업로드 활성화
	upload_max_filesize = 20M		파일 업로드 최대 용량
	post_max_size = 21M			post 요청 최대 용량	upload_max_filesize보다 커야함
	max_execution_time = 30			php 실행제한 시간(대용량 파일이 있을경우 늘여 주어야 한다.) 초단위
	max_input_time = 60			get, post 업로드 시간 제한 초단위
	memory_limit = 24M			최대 업로드 가능 용량	post_max_size 보다 커야 함
	
	http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=55577&page=21
	http://www.compuz.com/board/view.php?id=support_1&no=97512&page=27&sort=name&
	http://infosec.pe.kr/tag/php.ini

기타
	<?php, <? 둘다 사용 가능
	short_open_tag = On
	
	//변수 사용과 관련된 옵션 $_GET['aa'] -> $aa 로 사용할수있게 하느냐 마느냐
	register_globals = On

}}}

!!!PHP finally
{{{
PHP에는 finally구문이 없다.

mysql, ftp 등의 자원을 페이지 호출이 끝나고 나면 자동으로 해제해준다.

finally구문의 사용용도는 에러발생시 자원을 필히 해제하기 위해서 인데
PHP는 자동 해제이기 때문에 필요가 없다.
}}}

!!!PHP 에러 처리

*에러메세지 종류 설명
{{{
Parse error
	문법상에서 문제가 있을 경우 발생

Fatal error
	선언하지 않은 함수를 호출하는 등 프로그램 구조상의 문제

Warning: 
	프로그램상에서 어떠한 작업을 올바르지 수행하지 못하게 될 경우(문법적이 아닌 오류)에 주로 발생
	MySQL 오류는 100% Warning 오류가 됨
	php.ini의 설정 충돌 문제

	프로그램 로직이 죽지 않고 계속 실행 됨
}}}

*로직 종료
{{{
아래함수는 php의 로직을 바로 종료 하게 만든다.
	die();
	exit();
}}}

*에러메세지 재정의
{{{
set_error_handler
	에러메세지 발생시 처리 로직을 사용자가 임의로 수정 할 수 있음
	에러 발생시 로그를 기록 한다던지 에러메세지를 이쁘게 보여주고 싶을때 사용
}}}

*trigger_error
{{{
trigger_error("에러메세지 출력1", E_USER_WARNING);
	Warning: 에러메세지 출력 발생위치 표시
trigger_error("에러메세지 출력2", E_USER_NOTICE);
	Notice: 에러메세지 출력 발생위치 표시
trigger_error("에러메세지 출력3", E_USER_ERROR);	
	Fatal error: 에러메세지 출력 발생위치 표시 & 프로그램 로직 종료
}}}

*Exception 예외처리
{{{

try
{
    에러 발생로직
} catch(Exception $e) {
    print($e->getMessage());
}
}}}

*Exception 예외 발생
{{{
    throw new Exception("에러 메세지");


    Exception을 캐취 하지 않았을때는
    예외발생시 로직이 중단되며 예외 메세지와 함수 호출 static trace를 출력해준다.
}}}