1.
예전 버전 같으면 함수에러가 발생하면 어떤 함수 때문에 에러가 발생되었다고 나타나는데...
5.3 이후로는 http 500 내부 서버 오류를 출력하여 error_log 파일을 보지 않는한 알 수 없게 되었다.
서버 보안 때문인 듯 한데... 개발자 입장에서는 난감한 부분이다.
이를 해결하기 위해서는 php.ini에서 display_errors=Off 를 On으로 변경해야 한다.
2.
display_error=On으로 설정하게 되면 PHP Notice: Use of undefined constant DOCUMENT_ROOT - assumed...
이라는 notice 오류 메세지를 흔히 볼 수 있게 되었다.
배열에 대한 규제가 강화되어서 그런데... $_SERVER['DOCUMENT_ROOT'] 와 같이 []내부에 ''을 넣어 주면 해결된다.
3.
하지만 이러한 notice에러 출력은 빼고 싶다면
php.ini에서 error_reporting=E_ALL~E_NOTICE를 변경해 주면 된다.
0 : 모든 오류 보고를 끈다.
E_ERROR | E_WARNING | E_PARSE : 간단한 실행 오류만 보여준다.
E_ERROR | E_WARNING | E_PARSE | E_NOTICE : 간단한 실행 오류에 notice오류를 보여준다.
E_ALL ^ E_NOTICE : notice를 제외한 전체를 보여준다.
E_ALL : 모든 오류를 보고한다.
4.
Warning: date(): It is not safe to rely on the system’s timezone settings. 와 같은 에러 메세지는
#>rpm -ivh http://mirror01.idc.hinet.net/EPEL/6/x86_64/epel-release-6-8.noarch.rpm
#>yum install php-mcrypt[출처] centos6.2 - install php-mcrypt|작성자 게렉레겔
일반적인 설정
register_globals = Off
입력 데이터(POST, GET, 쿠키, 환경 변수 그 외의 서버 변수)에 관해서 이미 글로벌 변수로서 등록하지 않게 한다.
주의:register_globals 는 시큐리티 관련의 버그를 유발할 가능성이 있다
display_errors = Off
이 지시문을 off 로 하면 스크립트의 실행중에 에러가 발생 하여도 스크립트의 출력으로서의 에러 표시를 하지 않게 되어 접속 사용자에게 에러가 발생한것을 모르게 한다.
에러가 발생하면 에러 메세지안에 그 스크립트나 웹서버, 데이터 베이스 서버 등에 관한 정보가 표출 되는 일이 있어 문제가 발생 할 수 있다. 실제 운영중이 환경에서는 이 지시문을 off 로 하는 것이 좋다.
log_errors = On
위의 display_errors 를 보완한다. 스크립트의 실행중에 발생해 모든 에러는 로그로 남게 된다.
output_buffering = 4096
출력 버퍼를 4KB 로 설정한다.
출력 버퍼링을 유효하게 하면 일반적으로는 기입 회수나 가끔 패킷의 송출 횟수가 줄어들어 퍼포먼스의 향상으로 연결된다. 이 지시문에 의해 어느 정도 퍼포먼스를 향상 시키지만 사용하고 있는 웹서버나 스크립트에 크게 의존한다.
register_argc_argv = Off
$argv 및 $argc 글로벌 변수의 등록을 하지 않는다.
magic_quotes_gpc = Off
입력 데이터가 backslash로 이스케이프 되지 않게 되기 때문에 이 SQL을 데이타베이스에 보낼 수가 없게 된다.
이 설정으로 데이타베이스에 보내고 싶은 경우는 그때마다 addslashes() 함수를 사용하도록 한다.
allow_call_time_pass_reference = Off ;
함수 사용시에, 변수를 강제적으로 참조 하는 것을 금지한다.
이것을 PHP4 스타일로 실시하기 위해서는, 함수 정의 시에 관련하는 인수를 참조 하도록 한다.
파일 업로드
file_uploads = On
파일의 업로드를 허가할지를 설정한다.
upload_tmp_dir =
HTTP 로 파일을 업 로드할 때의 임시 작업 디렉토리
지정되지 않는 경우는 시스템의 디폴트(TEMP 디렉토리)가 사용된다
upload_max_filesize = 2M
업 로드하려는 파일의 최대 사이즈
register_globals = On
POST나 GET 데이터, 쿠키, 각종 환경/서버 변수에 대해 글로벌 변수로 작동하지 않게 함
on 이라면 $_POST[var] 를 $var로 사용할 수 있다.
보안문제나 변수의 꼬임 등을 유발할 수 있기때문에 on을 추천한다.
display_errors = Off
화면상에 오류를 표시하지 않도록 함
서버상의 설정이나 db에 관한 정보가 출력될 수 있으므로 off를 추천한다.
※ 에러를 표시하고 싶을 경우 아래 코드를 소스의 상단에 넣으면 된다.
<?
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
short_open_tag = on
<?php 로 시작하는 php코드의 선언을 <?로 줄여서 사용할 수 있게 한다.
max_execution_time = 30
스크립트의 최대 실행 시간을 30초로 설정한다.
대량의 데이터를 다루는 경우라면 더 늘려서 설정하도록 한다.
memory_limit = 8M
스크립트의 최대 메모리를 설정한다.
대량의 데이터를 다루는 경우라면 더 늘려서 설정하도록 한다.
post_max_size = 8M
받아들일 수 있는 POST 데이터의 최대 사이즈
대량의 데이터를 다루는 경우라면 더 늘려서 설정하도록 한다.
upload_max_filesize = 2M
업로드 가능한 최대 파일 사이즈
대량의 데이터를 다루는 경우라면 더 늘려서 설정하도록 한다.
upload_max_size ,post_max_size, memory_limit 이 그 주인공들 이며 만일 10메가의 파일을 업로드 하고자 할경우 다음과 같이 적용해 주는것이 좋다.
upload_max_size[10M] < post_max_size[11메가] < memory_limit[12메가]
아파치의 기본 설정은 대부분 10M 정도의 용량만 업로드 할 수 있도록