Como alterar as configurações definidas

Rodando o PHP como módulo do Apache

Quando usando o PHP como um módulo do Apache, você também pode mudar as definições de configuração usando diretivas na configuração do Apache (httpd.conf) e dos arquivos .htaccess (Você irá precisar de privilégios "AllowOverride Options" ou "AllowOverride All")

Com o PHP 4.0, existem várias diretivas do Apache que lhe permitem mudar a configuração PHP diretamente a partir dos arquivos de configuração do Apache. Para uma lista das diretivas que podem ser alteradas, veja aquelas marcadas com PHP_INI_ALL, PHP_INI_PERDIR, ou PHP_INI_SYSTEM, relacionadas na documentação da função ini_set().

Nota: Com o PHP 3.0, existem diretivas Apache que correspondem a cada definição de configuração do php3.ini, exceto os nomes prefixados por "php3_".

php_value nome valor

Define o valor da variável especificada. Pode ser utilizada somente com diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR. Para limpar um valor configurado anteriormente, utilize none como parâmetro.

Nota: Não utilize php_value para configurar valores booleandos. Em vez disso, use php_flag (veja abaixo).

php_flag nome on|off

Isto é usado para definir uma opção de configuração Booleana. Somente pode ser utilizada em diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR.

php_admin_value nome valor

Define o valor da variável especificada. Isto NÃO pode ser utilizado em arquivos .htaccess. Qualquer tipo de diretiva modificada com php_admin_value não pode ser sobrescrita por arquivos .htaccess ou diretivas virtualhost. Para limpar um valor configurado antetiormente, utilize none como parâmetro.

php_admin_flag nome on|off

Utilizado para definir uma opção de configuração Booleana. Isto NÃO pode ser utilizado em arquivos .htaccess. Qualquer diretiva configurada com php_admin_flag não pode ser sobrescrita por arquivos .htaccess ou diretivas virtualhost.

Exemplo 4-2. Exemplo de configuração do Apache

<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

Cuidado

Constantes PHP não existem fora do PHP. Por exemplo, no httpd.conf não pode utilizar constantes PHP como E_ALL ou E_NOTICE para configurar a diretiva error_reporting, pois elas não tem nenhum sentido e serão avaliados como 0. Nesses casos, utilize seus valores de bit. Essas constantes só podem ser utilizadas dentro do php.ini

Modificando a configuração do PHP via registro

Quando rodando o PHP no Windows, os valores de configuração podem ser modificados diretório a diretório utilizando o registro do Windows. Os valores de configuração são armazenados na chave do registro HKLM\SOFTWARE\PHP\Per Directory Values, onde as sub chaves correspondem aos caminhos. Por exemplo, valores de configuração para o diretório c:\inetpub\wwwroot devem ser armazenados na chave HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. As configurações para o diretório são ativadas para qualquer script rodando neste diretório ou qualquer subdiretório dele. Os valores sob a chave devem ter o nome das Diretivas de configuração do PHP e um valor string. As constantes do PHP nos campos não são interpretados.

Outras interfaces para o PHP

Independentemente da interface do PHP, você pode mudar certos valores em tempo de execução em seus scripts através ini_set(). A tabela seguinte explica em que nível as diretivas podem ser modificadas.

Tabela 4-1. Definições das constantes PHP_INI_*

ConstanteValorSignificado
PHP_INI_USER1Diretiva pode ser modificada em seus scripts
PHP_INI_PERDIR2 Diretiva pode ser modificada no php.ini, .htaccess ou httpd.conf
PHP_INI_SYSTEM4 Diretiva pode ser modificada no php.ini ou .htaccess
PHP_INI_ALL7Diretiva pode ser modificada em qualquer lugar

Você pode visualizar as configurações das diretivas na saída de phpinfo(). Você também pode acessar os valores individuais das configurações utilizando ini_get() ou get_cfg_var().