본문 바로가기

PHP의 php.ini 파일에서 설정할 수 있는 주요 항목들을 카테고리별로 정리

반응형

모든 항목을 설명하기에는 너무 방대하므로, 일반적으로 사용되는 중요한 항목들과 카테고리별로 관련된 설정들을 나열하고, 각 설정의 의미를 간략하게 소개합니다.

1. 기본 실행 환경 설정
engine: PHP 엔진을 사용할지 여부 (On/Off).
short_open_tag: 짧은 PHP 태그(<?) 사용 여부.
precision: 소수점 이하 출력 정밀도.
output_buffering: 출력 버퍼링을 사용할지 여부 및 크기.
implicit_flush: 각 출력 후 버퍼를 즉시 플러시할지 여부.
serialize_precision: serialize() 함수 사용 시 소수점 이하 처리 설정.
open_basedir: PHP가 접근할 수 있는 파일 경로를 제한.
disable_functions: 비활성화할 PHP 함수 목록.
disable_classes: 비활성화할 PHP 클래스 목록.

2. 파일 및 스트림 관련 설정
file_uploads: 파일 업로드 허용 여부.
upload_max_filesize: 업로드할 수 있는 최대 파일 크기.
post_max_size: POST 요청으로 전송할 수 있는 최대 데이터 크기.
allow_url_fopen: 외부 URL을 통해 파일을 열 수 있는지 여부.
allow_url_include: 외부 URL을 통해 파일을 include할 수 있는지 여부.
default_socket_timeout: 소켓 통신의 기본 타임아웃 시간.

3. 리소스 제한 및 성능 관련 설정
max_execution_time: 스크립트 최대 실행 시간.
memory_limit: 스크립트가 사용할 수 있는 최대 메모리 크기.
max_input_time: PHP가 입력 데이터를 처리하는 데 허용된 최대 시간.
max_input_vars: 허용되는 GET/POST/COOKIE 입력 변수의 최대 개수.
realpath_cache_size: realpath() 함수의 캐시 크기 설정.
realpath_cache_ttl: realpath() 함수 캐시의 TTL(수명) 설정.

4. 에러 및 로깅 설정
error_reporting: 보고할 에러의 수준을 설정.
display_errors: 브라우저에 에러 메시지를 표시할지 여부.
display_startup_errors: PHP 시작 시 발생하는 오류를 표시할지 여부.
log_errors: 에러를 로그 파일에 기록할지 여부.
error_log: 에러 로그를 기록할 파일의 경로.
track_errors: $php_errormsg 변수를 통해 마지막 에러 메시지를 기록할지 여부.

5. 세션 설정
session.save_handler: 세션 데이터를 저장하는 방식 설정 (files, memcached 등).
session.save_path: 세션 데이터를 저장할 디렉토리.
session.name: 세션 ID를 저장할 쿠키의 이름.
session.auto_start: 스크립트 시작 시 세션 자동 시작 여부.
session.gc_maxlifetime: 세션 데이터가 유효한 최대 시간.
session.gc_probability, session.gc_divisor: 세션 가비지 컬렉션 확률을 설정.

6. 데이터베이스 설정
MySQL 관련
mysqli.default_host: 기본 MySQL 호스트.
mysqli.default_user: 기본 MySQL 사용자명.
mysqli.default_pw: 기본 MySQL 비밀번호.
mysqli.default_port: MySQL의 기본 포트 번호.
mysqli.default_socket: MySQL 기본 소켓 경로.
PostgreSQL 관련
pgsql.allow_persistent: PostgreSQL 지속 연결을 허용할지 여부.
pgsql.max_persistent: 허용되는 최대 지속 연결 수.
pgsql.max_links: 허용되는 최대 연결 수 (지속 연결 포함).

7. 출력 및 캐싱 설정
output_buffering: 출력 버퍼링을 활성화할지 여부 및 크기.
zlib.output_compression: gzip을 사용하여 HTTP 응답 압축 여부.
zlib.output_compression_level: 압축 수준 설정.

8. 시간 관련 설정
date.timezone: PHP의 기본 시간대를 설정.
date.default_latitude, date.default_longitude: 기본 위도 및 경도 설정.
date.sunrise_zenith, date.sunset_zenith: 일출 및 일몰 계산을 위한 기본 천정각 설정.

9. 메일 설정
sendmail_path: sendmail 명령의 경로를 설정.
SMTP: 윈도우 환경에서 사용할 SMTP 서버 설정.
smtp_port: 윈도우 환경에서 SMTP 서버의 포트 설정.
mail.add_x_header: 이메일 헤더에 X-PHP-Originating-Script 추가 여부.

10. 세부 보안 설정
expose_php: PHP 버전을 HTTP 헤더로 노출할지 여부.
max_input_nesting_level: 배열 및 객체 입력 데이터의 최대 중첩 수준.
session.cookie_secure: HTTPS를 통해서만 쿠키 전송 여부.
session.cookie_httponly: JavaScript로 쿠키 접근 차단 여부.

11. 확장 모듈 관련 설정
extension: 특정 확장 모듈을 로드.
예시: extension=mysqli (MySQL 확장을 활성화).
zend_extension: Zend 확장을 로드.
예시: zend_extension=opcache.so (Opcache 확장 로드).

12. Opcache 설정
opcache.enable: Opcache 활성화 여부.
opcache.memory_consumption: Opcache가 사용할 메모리 크기.
opcache.max_accelerated_files: Opcache가 저장할 수 있는 최대 스크립트 파일 수.
opcache.validate_timestamps: 파일 변경 시각을 확인할지 여부.

13. 기타 설정
browscap: get_browser() 함수에서 사용할 브라우저 캡처 파일 경로.
user_ini.filename: 사용자 정의 php.ini 파일 이름 설정 (.user.ini).
variables_order: PHP가 환경 변수를 받아들이는 순서 설정.
request_order: HTTP 요청 변수를 받아들이는 순서 설정.
이 외에도 PHP 확장 모듈을 사용하거나 특정 기능을 추가하면 그에 맞는 설정이 추가될 수 있습니다. 예를 들어, 특정 확장 모듈(Memcached, Redis 등)을 사용하면 해당 모듈의 설정이 php.ini에 추가되기도 합니다.

주요 PHP 설정 항목 및 상세 설명

1. 기본 설정
short_open_tag
설명: 짧은 PHP 태그(<?) 사용 여부를 설정합니다.
기본값: Off
설정 방법:short_open_tag = On

max_execution_time
설명: 스크립트가 실행될 수 있는 최대 시간을 설정합니다. 이 시간 안에 스크립트가 끝나지 않으면 PHP는 실행을 중단합니다.
기본값: 30초
설정 방법:max_execution_time = 30

memory_limit
설명: PHP 스크립트가 사용할 수 있는 최대 메모리 크기를 설정합니다. -1로 설정하면 메모리 제한이 없습니다.
기본값: 128M
설정 방법:memory_limit = 128M

2. 파일 및 스트림 관련 설정
file_uploads
설명: 파일 업로드 기능을 활성화할지 여부를 설정합니다.
기본값: On
설정 방법:file_uploads = On

upload_max_filesize
설명: 업로드할 수 있는 파일의 최대 크기를 설정합니다.
기본값: 2M
설정 방법:upload_max_filesize = 2M

allow_url_fopen
설명: fopen() 및 file_get_contents()로 외부 URL을 통해 파일을 읽을 수 있도록 허용합니다.
기본값: On
설정 방법:allow_url_fopen = On

allow_url_include
설명: 원격 파일을 include, require로 포함할 수 있게 허용하는 옵션입니다. 보안상 위험할 수 있으므로 기본적으로 비활성화되어 있습니다.
기본값: Off
설정 방법:allow_url_include = On

3. 세션 설정
session.save_path
설명: 세션 데이터를 저장할 디렉터리를 설정합니다.
기본값: 시스템 임시 디렉터리
설정 방법:session.save_path = "/path/to/session/directory"

session.gc_maxlifetime
설명: 세션 데이터가 유효한 최대 시간을 초 단위로 설정합니다. 세션 데이터가 이 시간이 지나면 삭제됩니다.
기본값: 1440 (24분)
설정 방법:session.gc_maxlifetime = 1440

4. 에러 및 로깅 관련 설정
error_reporting
설명: PHP에서 어떤 수준의 오류를 보고할지 설정합니다. 모든 오류를 보고하려면 E_ALL을 사용합니다.
기본값: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
설정 방법:error_reporting = E_ALL

display_errors
설명: 오류 메시지를 브라우저에 출력할지 여부를 설정합니다. 개발 중에는 On, 프로덕션 환경에서는 보안을 위해 Off로 설정하는 것이 좋습니다.
기본값: On
설정 방법:display_errors = On

log_errors
설명: 오류를 로그 파일에 기록할지 여부를 설정합니다.
기본값: On
설정 방법:log_errors = On

error_log
설명: 오류 로그 파일의 경로를 설정합니다.
기본값: syslog (시스템 로그에 기록)
설정 방법:error_log = /path/to/php-error.log

5. 시간 관련 설정
date.timezone
설명: PHP의 기본 타임존을 설정합니다. 이 설정이 되어 있지 않으면 PHP에서 경고 메시지가 발생할 수 있습니다.
기본값: 없음 (설정 필요)
설정 방법:date.timezone = "Asia/Seoul"

6. 출력 버퍼링 및 캐시 설정
output_buffering
설명: 출력 버퍼링을 활성화할지 여부를 설정합니다. 출력 버퍼링이 활성화되면 스크립트가 완료되기 전까지 출력을 보류하여 성능을 향상시킬 수 있습니다.
기본값: 4096 (4KB)
설정 방법:output_buffering = 4096

zlib.output_compression
설명: HTTP 응답에서 gzip 압축을 활성화합니다.
기본값: Off
설정 방법:zlib.output_compression = On

7. 보안 관련 설정
open_basedir
설명: PHP 스크립트가 접근할 수 있는 파일 디렉터리를 제한합니다. 보안을 위해 특정 디렉터리만 접근 가능하게 설정할 수 있습니다.
기본값: 없음
설정 방법:open_basedir = /path/to/allowed/directory

disable_functions
설명: 보안상 위험할 수 있는 PHP 함수를 비활성화할 수 있습니다. 예를 들어, 시스템 명령어 실행 함수인 exec, shell_exec 등을 비활성화할 수 있습니다.
기본값: 없음
설정 방법:disable_functions = exec, shell_exec, system

8. 데이터베이스 관련 설정
mysqli.default_host
설명: MySQLi 확장에서 기본으로 사용할 데이터베이스 호스트를 설정합니다.
기본값: localhost
설정 방법:mysqli.default_host = "localhost"

mysqli.default_port
설명: MySQLi에서 사용할 기본 포트를 설정합니다.
기본값: 3306
설정 방법:mysqli.default_port = 3306

9. 확장 모듈 관련 설정
extension
설명: 특정 PHP 확장을 로드하는 설정입니다. 확장 모듈을 사용하려면 이 설정을 통해 활성화할 수 있습니다.
예시: mysqli 확장을 활성화하려면 다음과 같이 설정합니다:
extension=mysqli

10. 기타 중요 설정
post_max_size
설명: POST 요청으로 보낼 수 있는 최대 데이터 크기를 설정합니다.
기본값: 8M
설정 방법:post_max_size = 8M

max_input_time
설명: 입력 데이터를 받아들이는 최대 시간을 설정합니다.
기본값: 60 (초)
설정 방법:max_input_time = 60

php.ini는 PHP의 동작을 세부적으로 제어하는 중요한 설정 파일입니다. 
각 항목은 PHP 스크립트의 성능, 보안, 파일 처리, 세션 관리 등을 제어하는 역할을 하며, 시스템에 맞는 설정을 잘 적용해야 합니다.

PHP는 각 버전마다 새로운 기능이나 보안 업데이트를 반영하여 설정 항목이 추가되거나 변경될 수 있습니다. php.ini 파일에서 자신의 PHP 버전에 맞는 설정을 확인하고 사용해야 하며, 각 항목의 역할과 기본값을 숙지하는 것이 중요합니다.

이 모든 설정은 시스템에서 PHP가 어떻게 동작할지를 세밀하게 조정할 수 있게 해주며, 대부분의 항목은 보안, 성능, 안정성을 위한 중요한 역할을 합니다.

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.