[PHP] php.ini (PHP 환경설정)

Seo Joonsoo·2022년 6월 21일
1

php.ini는 PHP에 대한 설정값들이 저장되어 있는 파일입니다.
다양한 값들이 저장되어 있으며 php extension에 대한 설정 또는 사용자가 추가한 값들도 저장될 수 있습니다.

php.ini 설정은 PHP 함수를 통해 제어하거나 php.ini 파일을 직접 수정할 수 있습니다.
이렇게 값을 변경한 이후에는 아파치를 재시작 시켜 php.ini 설정값들을 다시 불러 오도록 해야 합니다.

[주요 설정]

개발시 사용되는 환경 설정 값들은 정말 다양하고 많습니다만 그 중 일부 설정에 대해 알아봅니다

0과 1로 주는 설정들은 대부분 1: 켠상태, 0: 끈상태 입니다.

opcache.enable
해당 옵션이 켜져 있으면 PHP 파일이 수정되더라도 즉시 반영되지 않고 짧게는 몇초 길게는 1분 가량의 시간이 지난 다음에야 웹페이지에 적용됩니다. 개발 시에는 이러한 기능이 굉장히 불편하기 때문에 0으로 꺼주시고 개발 이후에는 1로 변경하여 PHP의 성능을 높일 수 있습니다.

max_execution_time = 30
스크립트의 최대 실행시간(초단위)을 설정합니다.

max_input_time = 60
POST, GET, 파일업로드 등의 입력 데이터를 받아들이는 최대시간(초단위) 설정

memory_limit = 128M
스크립트가 사용할 수 있는 최대 메모리양 입니다.

file_uploads = On
파일 업로드 허가여부를 설정 합니다.

upload_max_filesize = 20M
업로드 파일의 최대 사이즈를 설정합니다. => upload_max_filesize보다 post_max_size가 커야합니다.

post_max_size = 80M
POST 데이터가 허용하는 최대 사이즈를 설정합니다. (post_max_size가 upload_max_filesize보다 커야합니다.)

display_errors = ON
개발 시 디버깅을 용이하게 해주는 설정입니다. 해당 설정을 켜게 될 경우 PHP 어느 부분에 에러가 발생하였는지를 알려줍니다. 그렇기 때문에 개발 완료 후에는 설정을 Off로 꺼두어야 합니다.





php 환경설정(php.ini) : [Language Options]

engine = On : Apache에서 PHP 스크립트 언어 엔진 적용(Off로 설정시 PHP파일을 보여주지 못하고 다운로드하게 됨)
zend.ze1_compatibility_mode = Off : zend 엔진 버전1의 호환모드 설정
short_open_tag = On : <? 태그 사용 허용(Off로 설정시 <?php, 와

unserialize_callback_func = : unserialize 중에 정의되지 않은 클래스를 작성해야 할 경우, 콜백 함수를 호출(정의되지 않은 클래스를 작성해야 할 때마다 호출)
allow_call_time_pass_reference = On : 함수 사용시 변수를 강제적으로 참조하는 것 금지


php 환경설정(php.ini) : [Safe Mode]

safemode = 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 : 스크립트가 사용할 수 있는 최대 메모리양 설정

[Error handling and logging]

error_reporting = E_ALL & ~E_NOTICE : E_NOTICE를 제외한 모든 에러 출력

  • E_ALL
  • E_ERROR
  • E_RECOVERABLE_ERROR
  • E_WARNING
  • E_PARSE
  • E_NOTICE
  • E_CORE_ERROR
  • E_CORE_WARNING
  • E_COMPILE_ERROR
  • E_COMPILE_WARNING
  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE

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 = : 에러 메세지 앞에 출력하는 라인 설정
;error_append_string = : 에러 메세지의 뒤에 출력하는 라인 설정
;error_log = filename : 지정된 파일에 에러 기록
;error_log = syslog : syslog에 에러 기록


[Data Handling]

;argseparator.output = "&" : PHP가 생성한 URL 인자를 구분하는 구분자 설정
;arg_separator.input = ";&" : PHP가 URL에서 변수를 분리하는데 사용하는 구분자 설정
variables_order = "EGPCS" : EGPCS[각주:14] 변수의 파싱순서 설정(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 변수를 선언할지 설정


[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 호환 헤더 전송)


[File Uploads]

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


[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, 매킨토시 방식 중 어떤 것을 사용할 것인지 검사)

profile
여러분들 삶에 한 획을 더하고 싶습니다.

0개의 댓글