Configuração em tempo de execução 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) A variável de ambiente PHPRC. A localização do arquivo php.ini pode ser definida para versões diferentes do PHP. A raiz do registro depende da compilação em 32 ou 64 bits do sistema operacional (SO) e do PHP. Para um PHP 32 bits em um SO de 32 bits ou um PHP de 64 bits em um SO de 64 bits use [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP], Para um PHP 32 bits em um SO de 64 bits use [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]]. Para sistema onde a compilação em bits coincida, as seguintes chaves são examinadas, nessa 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 os valores de versão PHP major, minor e release. Para PHP versão 32 bits em um SO de 64 bits, as seguintes chaves são examinadas em ordem: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] e [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x], onde x, y e z significam os valores de versão PHP major, minor e release. 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] ou [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\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. 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. Variáveis de ambiente podem ser referenciadas dentro de valores de configuração no &php.ini; como mostrado abaixo. A partir do PHP 8.3.0, um valor padrão pode ser especificado e será usado quando a variável referenciada não estiver definida. Variáveis de ambiente no &php.ini; 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 de arquivo &php.ini; É 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 . No 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 . Dentro de cada diretório o PHP irá pesquisar todos os arquivos terminados em .ini em ordem alfabética. 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 . Arquivos .user.ini O PHP tem suporte para arquivos de configuração INI por cada diretório. Esses arquivos são processados apenas pelo CGI/FastCGI SAPI. Essa funcionalidade torna obsoleta a extensão PECL htscanner. Se você estiver rodando o PHP como um módulo do Apache, use arquivos &htaccess; para obter o mesmo efeito. Além do arquivo &php.ini; principal, o PHP procura por arquivos INI em cada diretório, iniciando no diretório do arquivo PHP requisitado e continua o caminho até a raiz do documento atual (conforme definido na variável $_SERVER['DOCUMENT_ROOT']). Caso o arquivo PHP esteja fora da raiz do documento, apenas o seu diretório é procurado. Somente configurações INI com os modos INI_PERDIR e INI_USER serão reconhecidos nos arquivos INI estilo .user.ini. Duas novas diretivas INI, user_ini.filename e user_ini.cache_ttl controlam o uso de arquivos INI de usuário. A diretiva user_ini.filename define o nome do arquivo que o PHP procura em cada diretório; se for definido como uma string vazia, o PHP não fará a varredura em tudo. O padrão é .user.ini. A diretiva user_ini.cache_ttl controla a frequência de como os arquivos INI de usuário são relidos. O padrão é de 300 segundos (5 minutos). Onde uma configuração deve ser definida Estes modos determinam quando e onde uma diretiva do PHP pode ou não pode ser definida, e cada diretiva no manual faz referência a um destes modos. Por exemplo, algumas definições podem ser feitas em um script PHP usando ini_set, enquanto outras só podem ser feitas no &php.ini; ou &httpd.conf;. Por exemplo, a configuração output_buffering é INI_PERDIR portanto não pode ser definida usando ini_set. Entretanto a diretiva display_errors é INI_ALL portanto pode ser definida em qualquer lugar com ini_set. Constantes de modo INI INI_USER (int) A entrada pode ser definida em scripts do usuário (como com ini_set) ou no registro do Windows. A entrada pode ser definida no &user-ini; INI_PERDIR (int) A entrada pode ser definida no &php.ini;, &htaccess;, &httpd.conf; ou &user-ini; INI_SYSTEM (int) A entrada pode ser definida no &php.ini; ou &httpd.conf; INI_ALL (int) A entrada pode ser definida em qualquer lugar Como mudar as configurações Executando PHP como módulo do Apache Quando usar o PHP como módulo do Apache, você pode mudar as configurações usando diretivas nos arquivos de configuração do Apache (ex.: &httpd.conf; e &htaccess;). Você precisará de privilégios "AllowOverride Options" ou "AllowOverride All" para fazer isso. Há várias diretivas do Apache que permitem que você mude a configuração do PHP de dentro dos arquivos de configuração do Apache. Para uma lista de quais diretivas são INI_ALL, INI_PERDIR, ou INI_SYSTEM, olhe no apêndice Lista de diretivas do arquivo php.ini. php_value name value Define o valor da diretiva especificada. Pode ser usado apenas com diretivas do tipo INI_ALL e INI_PERDIR. Para limpar um valor definido anteriormente, use o valor none. Não use php_value para definir valores booleanos. A diretiva php_flag deve ser usada (veja abaixo). php_flag name on|off Usado para definir uma diretiva de configuração booleana. Pode ser usada apenas com diretivas dos tipos INI_ALL e INI_PERDIR. php_admin_value name value Define o valor da diretiva especificada. Essa diretiva não pode ser usada em arquivos &htaccess;. Qualquer tipo de diretiva definido com php_admin_value não pode ser sobrescrito pelo &htaccess; ou pela função ini_set. Para limpar um valor definido anteriormente, use o valor none. php_admin_flag name on|off Usado para definir uma diretiva de configuração booleana. Essa diretiva não pode ser usada em arquivos &htaccess;. Qualquer tipo de diretiva definido com php_admin_flag não pode ser sobrescrito pelo &htaccess; ou pela função ini_set. Exemplo de configuração do Apache php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on ]]> Constantes PHP não existem fora do PHP. Por exemplo, no arquivo &httpd.conf; você não pode usar constantes do PHP como E_ALL ou E_NOTICE para definir a diretiva error_reporting, já que elas não terão significado algum e serão avaliadas como 0. Ao invés disso, use os valores de máscara de bits associados. Essas constantes podem ser usados no &php.ini; Mudando configuração do PHP através do registro do Windows Quando executar o PHP no Windows, os valores de configuração podem ser modificados para cada diretório, usando o registro do Windows. Os valores de configuração são armazenados na chave de registro HKLM\SOFTWARE\PHP\Per Directory Values, nas sub-chaves correspondentes aos caminhos dos diretórios. Por exemplo, valores para o diretório c:\inetpub\wwwroot estariam armazenados na chave HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. As configurações para o diretório estarão ativas para qualquer script rodando neste diretório ou qualquer subdiretório dele. Os valores na chave devem ter o nome da diretiva de configuração do PHP e um valor string. Constantes PHP nos valores não são interpretados. Apenas valores de configuração modificáveis no INI_USER podem ser definidos desta forma, e valores do INI_PERDIR não podem, pois esses valores são recarregados em cada request. Outras interfaces para PHP Independente de como você execute PHP, você pode mudar certos valores durante a execução de seus scripts através da função ini_set. Veja a documentação na página ini_set para mais informações. Se você estiver interessado na lista completa das configurações definidas no seu sistema com os valores atuais, você pode executar a função phpinfo, e revisar a página resultante. Você pode também acessar os valores de configurações de diretivas individuais em tempo de execução usando as funções ini_get ou get_cfg_var.