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_limit | PHP 스크립트 최대 메모리 사용량 | 256M 이상 |
max_execution_time | 스크립트 최대 실행 시간 (초) | 60 이상 |
post_max_size | POST 요청 최대 크기 | 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_limit | PHP 사용 메모리 한도 (기본: 128M) | 무거운 이미지 처리나 대량 데이터 작업 시 256M 이상 |
max_input_time | POST/GET 입력 처리 최대 시간 (초) | 파일 업로드/폼이 복잡한 경우 늘려줌 |
realpath_cache_size | 파일 경로 캐시 크기 설정 | 성능 개선 목적 (e.g. 4096k) |
realpath_cache_ttl | 파일 경로 캐시 유지 시간 (초) | 기본은 120, 큰 프로젝트는 더 길게 설정 |
expose_php | PHP 버전 정보를 HTTP 응답 헤더에 노출할지 | Off 권장 (보안상 이유) |
session.gc_maxlifetime | 세션 유지 시간 (초) | 기본 1440초(24분), 로그인 유지 시간 조정 |
session.cookie_secure | HTTPS에서만 세션 쿠키 전송 여부 | On 권장 (보안 강화) |
session.cookie_httponly | JS에서 쿠키 접근 방지 | On 권장 (XSS 대응) |
allow_url_fopen | 외부 URL에서 파일 접근 허용 여부 | Off 는 보안 강화, On 은 외부 API 필요 시 |
disable_functions | PHP에서 특정 함수 사용 금지 | exec , shell_exec , passthru 등 서버 보안 목적 |
upload_tmp_dir | 업로드된 파일의 임시 저장 경로 지정 | 퍼미션 문제 해결, 보안 분리 |
open_basedir | PHP가 접근 가능한 디렉토리 제한 | 서버 보안 강화용 |
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에 적용된 설정이 화면에 표시됩니다.

이런 화면이 나타납니다. 그리고 설정된 값도 저기에 반영되어 표시됩니다.
7. 개발 vs 운영 환경 설정 비교 팁
항목 | 개발 환경 | 운영 환경 |
---|---|---|
display_errors | On | Off |
error_reporting | E_ALL | E_ALL & ~E_NOTICE |
log_errors | On | On |
memory_limit | 넉넉하게 | 적정선 유지 |
upload_max_filesize | 작업용으로 크게 | 필요한 수준만큼 |
8. 주의가 필요한 php.ini
설정 항목
항목 | 설명 | 잘못 설정했을 때 문제점 |
---|---|---|
display_errors | 오류 메시지를 브라우저에 출력할지 여부 (On /Off ) | 운영 서버에서 On 이면 경로, DB정보, 코드 노출 위험! 반드시 Off |
expose_php | 응답 헤더에 PHP 버전을 노출할지 (On /Off ) | 해커가 PHP 버전 취약점을 노릴 수 있음 → Off 권장 |
allow_url_fopen | file_get_contents() 등에서 외부 URL 허용 | On 이면 악성 외부 접근 가능 → 가능하면 Off |
allow_url_include | include() 로 외부 코드 포함 허용 | 보안상 매우 위험 → 반드시 Off 유지 |
upload_max_filesize / post_max_size | 업로드 가능한 최대 파일 크기 | 너무 크게 설정하면 자원 낭비 / 너무 작으면 사용자 불편 |
memory_limit | PHP 스크립트가 사용할 수 있는 메모리 한도 | 무한대로 설정 시, 무한 루프 등으로 서버 메모리 고갈 위험 |
max_execution_time | PHP 코드 실행 시간 제한 | 제한이 없으면 무한 루프로 서버 다운 가능 / 너무 짧으면 타임아웃 잦음 |
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_functions
에exec
,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의 성능, 보안, 안정성에 직결되는 핵심 설정 파일입니다. 자주 사용하는 옵션부터 천천히 익혀가며 실무에서 유용하게 활용해보세요.
1 thought on “PHP 설정 파일 php.ini 설정 가이드 완전 정리”