PHP 환경 설정 및 php.ini 개요
PHP 가상 머신(Zend Engine)은 스크립트를 파싱하고 메모리를 할당할 때, 전역 설정 텍스트 파일인 php.ini 파일에 명시된 규칙과 제약값을 기준으로 동작을 제한하고 연산 환경을 보장합니다.
이 장에서는 PHP 실행의 근간을 구성하는 php.ini 파일의 역할과 위치 확인 요령, 그리고 여러 설정 계층 간의 우선순위를 알아봅니다.
1. PHP 환경설정 적용 우선순위 (Hierarchy)
PHP는 설정값을 읽어 들일 때, 시스템 최하위 기본값부터 시작하여 시스템 전역 설정 ➡️ 웹서버 가상 호스트 ➡️ 폴더별 설정 ➡️ 실행 중인 애플리케이션 소스코드 레벨 순으로 우선권을 매겨 덮어쓰기(Override) 처리합니다.
아래 다이어그램은 이 덮어쓰기 계층 관계를 도식화한 것입니다.
2. php.ini 파일의 기능적 정의
php.ini 파일은 일반 텍스트 포맷으로 구성되어 있으며, 각 라인마다 지시어 = 설정값 형태로 옵션을 부여합니다. 이를 통해 웹 서버나 CLI 프로세스는 다음과 같은 중요한 사항들을 결정합니다.
- 자원 제약 설정: 실행 시 최대 가용 메모리 크기(
memory_limit), 파일 업로드 최대 허용 바이트(upload_max_filesize), 스크립트 최대 가동 시간 제한(max_execution_time) 등을 제어해 서버 오버헤드를 막습니다. - 보안 제어: 클라이언트 브라우저 화면에 에러를 보여줄지 여부(
display_errors), 중요 파일 접근 경로 제한(open_basedir), 위험 함수 비활성화(disable_functions) 등 핵심 보안 벽을 구성합니다. - 모듈 자동 로드: 확장 모듈 디렉터리 경로(
extension_dir)를 연결하고 외부 라이브러리(.so또는.dll)들의 기동을 정의합니다.
3. 활성화된 php.ini 파일 경로 찾기
운영 서버나 로컬 기기에 여러 버전의 PHP가 섞여 구동될 경우, 엉뚱한 설정 파일을 고친 후 왜 적용되지 않는지 방황하기 쉽습니다. 활성화된 정확한 파일의 위치는 다음 두 가지 방법으로 즉각 확보해야 합니다.
- 웹 브라우저 확인: 소스코드에
phpinfo();함수를 기입하고 실행하여, 출력 화면 상단 표의Loaded Configuration File행에 기입된 절대 경로를 찾습니다. - 콘솔 터미널 확인: 셸 환경에서 아래와 같이 입력하여 사용 중인 파일을 조회합니다.
$ php --ini Loaded Configuration File: /etc/php/8.3/fpm/php.ini
4. 세부 설정 학습하기
서브목차