O arquivo de configuração
O arquivo de configuração (php.ini)
é lido quando o PHP inicia. Para as versões de módulo de servidor,
isso acontece apenas quando o servidor web for iniciado. Para as
versões CGI e CLI, isso acontece
a cada invocação.
php.ini é procurado nesses lugares (na ordem):
-
Local específico do módulo SAPI (diretiva
PHPIniDir
no Apache 2, opção de linha de comando -c
no CGI e CLI,
parâmetro php_ini
no NSAPI,
variável de ambiente PHP_INI_PATH
no THTTPD)
-
A variável de ambiente PHPRC. Antes do PHP 5.2.0,
isso era verificado após as chaves do registro mencionada abaixo.
-
A partir do PHP 5.2.0, a localização do arquivo
php.ini
pode ser definida para versões diferentes do PHP. As seguintes chaves
do registro são examinadas na ordem:
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]
,
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]
e
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
, onde
x, y e z significam a versão maior, menor e release do PHP. Se houver um valor
para IniFilePath
nestas chaves, então o primeiro
encontrado será utilizado para a localização do php.ini
(apenas Windows).
-
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
, valor de
IniFilePath
(Somente Windows).
-
Diretório de trabalho atual (exceto CLI)
-
O diretório do servidor web (para módulo SAPI), ou diretório do PHP
(caso contrário, no Windows).
-
Diretório do Windows (C:\windows
ou C:\winnt) (para Windows), ou
a opção de tempo de compilação
--with-config-file-path
.
Se php-SAPI.ini existe (onde SAPI é o SAPI usado, então o
nome de arquivo é, por exemplo, php-cli.ini ou
php-apache.ini), é usado ao invés do arquivo php.ini.
O nome SAPI pode ser determinado pela função php_sapi_name().
Nota:
O servidor web Apache muda o diretório para raiz durante a inicialização, causando com
que o PHP tente ler o arquivo php.ini da raiz do arquivo de sistema, se ele existir.
O uso de variáveis de ambiente podem ser usadas no php.ini como mostrado abaixo.
Exemplo #1 php.ini Variáveis de ambiente
; PHP_MEMORY_LIMIT is taken from environment
memory_limit = ${PHP_MEMORY_LIMIT}
As diretivas do arquivo php.ini tratadas por extensões são documentadas
nas respectivas páginas das próprias extensões. A lista de
diretivas principais está disponível no apêndice. Nem todas
as diretivas do PHP estão documentadas no manual. Para uma lista completa
das diretivas disponíveis na sua versão do PHP, por favor leia seu arquivo
php.ini. Alternativamente, você pode encontrar
» a última versão do php.ini no
Git, que também pode ser útil.
Exemplo #2 Exemplo de arquivo 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"
A partir do PHP 5.1.0, é possível acessar as variáveis .ini
dentro dos arquivos .ini. Exemplo: open_basedir = ${open_basedir}
":/new/dir"
.
Configuração em diretório
É possível configurar o PHP para procurar por arquivos .ini em um diretório
após a leitura do php.ini. Isto é possível na compilação pela configuração da opção
--with-config-file-scan-dir. No
PHP 5.2.0 e posterior, o diretório de configuração pode ser sobrescrito em tempo de execução
através da configuração da variável de ambiente PHP_INI_SCAN_DIR.
É possível procurar em vários diretórios os separando com o
delimitador específico da plataforma (;
no Windows, NetWare
e RISC OS; :
em todas as outras plataformas; o PHP
utilizará a constante PATH_SEPARATOR
).
Se um diretório em branco estiver informado em PHP_INI_SCAN_DIR, o PHP
também procurará pelo diretório informado na diretiva de compilação
--with-config-file-scan-dir.
Dentro de cada diretório o PHP irá pesquisar todos os arquivos terminados em
.ini
em ordem alfabetica. A lista de arquivos
é carregada, e nessa ordem são interpretados com uma chamada a
php_ini_scanned_files(), o por rodar o PHP com a opção
--ini.