PHP 설정 파일 php.ini 설정 가이드 완전 정리

By: master

php.ini 설정 가이드 완전 정리- PHP 개발이나 서버 운영을 하다 보면 반드시 한 번쯤은 마주하게 되는 파일이 있습니다. 바로 PHP의 핵심 설정 파일인 php.ini입니다.

php.ini 는 PHP가 어떻게 동작할지를 결정하는 설정 모음으로, 에러 로그 출력부터 업로드 용량 제한, 확장 모듈 활성화, 시간 제한 설정 등 수많은 중요한 기능을 조정할 수 있습니다.

이 글에서는 php.ini 기본 개념부터, php.ini 경로 확인 방법, php.ini 수정 예시, 최적화 방법과, 실무에서 자주 수정하는 항목, 주의해야 할 설정까지 단계별로 php.ini 설정 가이드 방법을 제시합니다.


1. php.ini란 무엇인가?

php.ini는 PHP 해석기의 설정값을 정의하는 구성 파일입니다.
서버가 PHP를 실행할 때 이 파일을 읽어, 어떻게 동작할지 결정합니다.

✔️ 주요 설정 항목 예시:

  • 에러 출력 여부
  • 메모리 사용량 제한
  • 파일 업로드 용량 제한
  • 타임존 설정
  • cURL, mbstring 등 확장 모듈 설정

2. php.ini 위치 확인하는 방법

php -i | grep php.ini

결과 예시:

Loaded Configuration File => /etc/php/8.3/apache2/php.ini

✔️ PHP-FPM을 사용할 경우:

/etc/php/8.3/fpm/php.ini

✔️ CLI만 쓴다면:

/etc/php/8.3/cli/php.ini

3. 자주 사용하는 설정 항목 정리

아래는 실무에서 가장 자주 조정하는 php.ini 설정입니다:

설정 항목설명추천 값
memory_limitPHP 스크립트 최대 메모리 사용량256M 이상
max_execution_time스크립트 최대 실행 시간 (초)60 이상
post_max_sizePOST 요청 최대 크기32M 이상
upload_max_filesize업로드 파일 최대 크기32M 이상
date.timezone타임존 설정Asia/Seoul
display_errors에러 화면 출력 여부개발: On / 운영: Off
error_reporting출력할 에러 종류E_ALL (전체)
log_errors에러 로그 저장 여부On
error_log로그 저장 경로/var/log/php_errors.log

추가로 많이 사용되는 php.ini 고급 설정 항목

설정 항목설명실무 활용 예
max_input_vars하나의 요청에서 허용되는 변수 수 (기본: 1000)대형 폼(예: 게시판 관리, 상품 일괄 수정 등)에서 값 누락 방지
memory_limitPHP 사용 메모리 한도 (기본: 128M)무거운 이미지 처리나 대량 데이터 작업 시 256M 이상
max_input_timePOST/GET 입력 처리 최대 시간 (초)파일 업로드/폼이 복잡한 경우 늘려줌
realpath_cache_size파일 경로 캐시 크기 설정성능 개선 목적 (e.g. 4096k)
realpath_cache_ttl파일 경로 캐시 유지 시간 (초)기본은 120, 큰 프로젝트는 더 길게 설정
expose_phpPHP 버전 정보를 HTTP 응답 헤더에 노출할지Off 권장 (보안상 이유)
session.gc_maxlifetime세션 유지 시간 (초)기본 1440초(24분), 로그인 유지 시간 조정
session.cookie_secureHTTPS에서만 세션 쿠키 전송 여부On 권장 (보안 강화)
session.cookie_httponlyJS에서 쿠키 접근 방지On 권장 (XSS 대응)
allow_url_fopen외부 URL에서 파일 접근 허용 여부Off는 보안 강화, On은 외부 API 필요 시
disable_functionsPHP에서 특정 함수 사용 금지exec, shell_exec, passthru 등 서버 보안 목적
upload_tmp_dir업로드된 파일의 임시 저장 경로 지정퍼미션 문제 해결, 보안 분리
open_basedirPHP가 접근 가능한 디렉토리 제한서버 보안 강화용
auto_prepend_file / auto_append_file모든 스크립트에 자동으로 로드되는 파일 지정글로벌 로깅, 공통 보안 필터 사용 시

🔐 실무에서 잘 안 건드리는 설정

  • doc_root, user_dir 등은 PHP를 Apache 모듈로 직접 설정할 때 외에는 잘 쓰지 않음
  • extension_dir 등은 대부분 자동 설정됨
  • default_charset, default_mimetype는 프레임워크에서 이미 설정되어 있음

4. 확장 모듈 활성화 예시

주석(;)이 붙어 있으면 비활성 상태입니다.
세미콜론을 제거해 모듈을 활성화합니다.

;extension=curl   ;  비활성화 상태
extension=curl    ;  활성화 상태
extension=mbstring
extension=gd

5. 설정 변경 후 반영하는 방법

php.ini를 수정한 뒤에는 웹 서버 재시작이 필요합니다.

Apache 사용 시:

sudo systemctl restart apache2

PHP-FPM 사용 시:

sudo systemctl restart php8.3-fpm

6. 설정 값이 제대로 적용됐는지 확인

간단한 PHP 코드로 확인 가능:

<?php
phpinfo();
?>

브라우저로 열면, 현재 php.ini에 적용된 설정이 화면에 표시됩니다.

php.ini 설정 가이드 - 수정 후 phpinfo() 화면으로 확인하기

이런 화면이 나타납니다. 그리고 설정된 값도 저기에 반영되어 표시됩니다.


7. 개발 vs 운영 환경 설정 비교 팁

항목개발 환경운영 환경
display_errorsOnOff
error_reportingE_ALLE_ALL & ~E_NOTICE
log_errorsOnOn
memory_limit넉넉하게적정선 유지
upload_max_filesize작업용으로 크게필요한 수준만큼

8. 주의가 필요한 php.ini 설정 항목

항목설명잘못 설정했을 때 문제점
display_errors오류 메시지를 브라우저에 출력할지 여부 (On/Off)운영 서버에서 On이면 경로, DB정보, 코드 노출 위험! 반드시 Off
expose_php응답 헤더에 PHP 버전을 노출할지 (On/Off)해커가 PHP 버전 취약점을 노릴 수 있음 → Off 권장
allow_url_fopenfile_get_contents() 등에서 외부 URL 허용On이면 악성 외부 접근 가능 → 가능하면 Off
allow_url_includeinclude()로 외부 코드 포함 허용보안상 매우 위험 → 반드시 Off 유지
upload_max_filesize / post_max_size업로드 가능한 최대 파일 크기너무 크게 설정하면 자원 낭비 / 너무 작으면 사용자 불편
memory_limitPHP 스크립트가 사용할 수 있는 메모리 한도무한대로 설정 시, 무한 루프 등으로 서버 메모리 고갈 위험
max_execution_timePHP 코드 실행 시간 제한제한이 없으면 무한 루프로 서버 다운 가능 / 너무 짧으면 타임아웃 잦음
session.auto_start모든 페이지 로드 시 세션 자동 시작프레임워크와 충돌할 수 있음 (Laravel, CodeIgniter 등)
register_globals외부 변수 자동 등록 (구버전 PHP)이미 지원 종료되었지만, On이면 심각한 보안 문제 발생 가능
disable_functions보안상 위험한 함수 차단 설정exec, system 등 제한 안 하면 서버 명령어 실행 노출 가능

💡 팁: 실수하기 쉬운 설정

  • upload_tmp_dir을 지정했는데 퍼미션이 없으면 업로드 실패
  • timezone 설정을 안 하면 date()에서 경고 발생
  • session.save_path가 유효하지 않으면 세션이 저장되지 않아 로그인 불가

운영 서버 설정 체크리스트

  • display_errors = Off
  • log_errors = On + error_log 경로 지정
  • expose_php = Off
  • memory_limit = 256M 또는 용도에 맞게
  • disable_functionsexec, system, passthru 등 추가
  • session.cookie_secure = On (HTTPS 환경)
  • allow_url_fopen = Off (외부 API 필요 시만 On)

php.ini는 단순히 성능을 조절하는 파일이 아니라,
보안·자원 관리·애플리케이션 안정성까지 직접 영향을 줍니다.

특히 운영 환경에서는 보안 위협 요소가 될 수 있는 항목을 꼭 점검하고,
필요하다면 ini_set()이나 .htaccess로 제한적으로 설정을 오버라이드하는 것도 좋습니다.


자주 묻는 질문 (FAQ)

Q. php.ini 파일을 실수로 잘못 바꿨는데 복구 방법은?
→ 원본 백업(php.ini.default) 파일을 복사해 복구할 수 있습니다. 또는 PHP 재설치 시 초기화됩니다.

Q. CLI와 웹서버 설정이 다른 것 같아요.
php -i 결과의 Loaded Configuration File을 확인하고, 각각 CLI, Apache, FPM 별로 php.ini가 따로 존재하는 점을 주의하세요.

Q. 설정이 적용이 안 되는 것 같아요.
phpinfo()로 적용 여부를 반드시 확인하고, 웹서버가 재시작되었는지 점검하세요.


요약 정리

항목설명
파일 위치/etc/php/8.3/apache2/php.ini (환경에 따라 다름)
자주 변경하는 설정메모리, 실행 시간, 업로드 용량, 에러 출력 등
설정 적용웹서버 재시작 필요 (apache2, php-fpm)
확인 방법phpinfo() 또는 php -i

🔧 결론

php.ini 설정 가이드”를 이렇게 알아봤습니다.php.ini 파일은 PHP의 성능, 보안, 안정성에 직결되는 핵심 설정 파일입니다. 자주 사용하는 옵션부터 천천히 익혀가며 실무에서 유용하게 활용해보세요.

관련 내용

Fatal error: Call to undefined function mb_strpos() 오류 해결법

Fatal error: Call to undefined function curl_init() 오류 해결법

1 thought on “PHP 설정 파일 php.ini 설정 가이드 완전 정리”

Leave a Comment