구성 파일
구성 파일(php.ini)은 PHP가 시작될 때 읽습니다. PHP의 서버 모듈 버전의 경우 웹 서버가 시작될 때 한 번만 발생합니다. CGI 및 CLI 버전의 경우 모든 호출에서 발생합니다.
php.ini/var>는 다음 위치에서 검색됩니다(순서대로):
- SAPI 모듈 특정 위치(Apache 2의
PHPNiDir
지시문, CGI 및 CLI의-c
명령줄 옵션) - PHPRC 환경 변수.
-
php.ini
파일의 위치는 다른 버전의 PHP에 대해 설정할 수 있습니다. 레지스트리 키의 루트는 설치된 OS 및 PHP의 32비트 또는 64비트에 따라 다릅니다. 32비트 OS의 32비트 PHP 또는 64비트 OS의 64비트 PHP의 경우 64비트 OS의 PHP 32비트 버전에 대해[(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
사용[HKEY_LOCAL_MACHINE\SOFTWARE] \WOW6432Node\PHP]
] 대신 동일한 비트 설치의 경우[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\xyz]
,[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\xy]
및[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
레지스트리 키가 순서대로 검사됩니다. 여기서 x, y 및 z는 PHP 주, 부 및 릴리스 버전을 의미합니다. 64비트 OS에서 PHP의 32비트 버전의 경우 다음 레지스트리 키가 순서대로 검사됩니다.[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\xyz]
,[ HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\xy]
및[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
, 여기서 x, y 및 z는 PHP 주, 부 및 릴리스 버전을 의미합니다. 이들 중 하나에IniFilePath
값이 있는 경우 키, 발견된 첫 번째 키가php.ini
의 위치로 사용됩니다(Windows만 해당). -
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
또는[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
,IniFilePath
값(Windows만 해당). - 현재 작업 디렉토리(CLI 제외).
- 웹 서버의 디렉토리(SAPI 모듈의 경우) 또는 PHP의 디렉토리(Windows의 경우).
- Windows 디렉터리(C:\windows 또는 C:\winnt)(Windows의 경우) 또는
--with-config-file-path
컴파일 시간 옵션.
php-SAPI.ini가 있는 경우(여기서 SAPI는 사용 중인 SAPI이므로 예를 들어 php-cli.ini 또는 php-apache.ini) php.ini 대신 사용됩니다. SAPI 이름은 php_sapi_name()으로 확인할 수 있습니다.
메모: Apache 웹 서버는 시작 시 디렉토리를 루트로 변경하여 PHP가 루트 파일 시스템(있는 경우)에서 php.ini 읽기를 시도하게 합니다.
환경 변수를 사용하면 아래와 같이 php.ini에서 사용할 수 있습니다.
예제 #1 php.ini 환경 변수
; PHP_MEMORY_LIMIT is taken from environment memory_limit = ${PHP_MEMORY_LIMIT}
확장에 의해 처리되는 php.ini 지시문은 확장 자체의 해당 페이지에 문서화되어 있습니다. 핵심 지시문 목록은 부록에서 확인할 수 있습니다. 모든 PHP 지시문이 이 매뉴얼에 반드시 문서화되어 있는 것은 아닙니다. PHP 버전에서 사용할 수 있는 지시문의 전체 목록은 주석이 잘 달린 php.ini 파일을 참조하십시오. 또는 » Git의 최신 php.ini도 도움이 될 수 있습니다.
예제 #2 php.ini 예제
; any text on a line after an unquoted semicolon (;) is ignored [php] ; section markers (text within square brackets) are also ignored ; Boolean values can be set to either: ; true, on, yes ; or false, off, no, none register_globals = off track_errors = yes ; you can enclose strings in double-quotes include_path = ".:/usr/local/lib/php" ; backslashes are treated the same as any other character include_path = ".;c:\php\lib"
.ini 파일 내에서 기존 .ini 변수를 참조할 수 있습니다. 예: open_basedir = ${open_basedir} ":/new/dir"
.
디렉토리 스캔
php.ini를 읽은 후 디렉토리에서 .ini 파일을 스캔하도록 PHP를 구성할 수 있습니다. 이것은 --with-config-file-scan-dir 옵션을 설정하여 컴파일 타임에 수행할 수 있습니다. 그런 다음 PHP_INI_SCAN_DIR 환경 변수를 설정하여 스캔 디렉토리를 런타임에 재정의할 수 있습니다.
플랫폼별 경로 구분 기호(;
Windows, NetWare 및 RISC OS의 경우, :
다른 모든 플랫폼의 경우, PHP가 사용하는 값은 PATH_SEPARATOR
상수로 사용 가능)로 구분하여 여러 디렉토리를 스캔할 수 있습니다. PHP_INI_SCAN_DIR에 빈 디렉토리가 주어지면 PHP는 컴파일 타임에 --with-config-file-scan-dir을 통해 주어진 디렉토리도 스캔합니다.
각 디렉토리 내에서 PHP는 .ini
로 끝나는 모든 파일을 알파벳 순서로 스캔합니다. 로드된 파일 목록과 순서는 php_ini_scanned_files()를 호출하거나 --ini 옵션과 함께 PHP를 실행하여 사용할 수 있습니다.
Assuming PHP is configured with --with-config-file-scan-dir=/etc/php.d, and that the path separator is :... $ php PHP will load all files in /etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php PHP will load all files in /usr/local/etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php PHP will load all files in /etc/php.d/*.ini, then /usr/local/etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php PHP will load all files in /usr/local/etc/php.d/*.ini, then /etc/php.d/*.ini as configuration files.