BuscaPé, líder em comparação de preços na América Latina

PHPit

Pular navegação

Sobrescrevendo as configurações do php.ini com Apache e .htaccess

Enviado em 28/02/2008 às 11:58

Conceito

Parte deste artigo foi baseado neste capítulo do manual.

Nem sempre você pode (ou quer) definir diretivas do PHP em cada arquivo seu utilizando a função ini_set(). Muitas vezes é necessário estabelecer diretivas que se restrinjam a apenas alguns diretórios, e é aí que entra o Apache.

Com o .htaccess você pode sobreescrever diretivas do PHP direto pelo Apache. É importante observer que o PHP deve estar rodando como um módulo.

Uma coisa que você precisa saber antes de começar é se você possui os privilégios AllowOverride Options ou AllowOverride All.

Mão na massa


Com o PHP rodando como módulo, você pode estipular a mudança de diretivas através do httpd.conf ou .htaccess. Geralmente, nas hospedagens compartilhadas, só se tem acesso ao .htaccess mesmo...

Existem várias diretivas que podem ser alteradas. Você pode conferir a lista no Apêndice Diretivas do arquivo php.ini do manual do PHP. Neste apêndice você também confere quais diretivas são do tipo PHP_INI_ALL, PHP_INI_PERDIR e PHP_INI_SYSTEM.

Vejamos então quais são os comandos que podemos utilizar no nosso .htaccess.

php_value nome valor

Para alterar valores não booleanos, devemos utilizar o comando php_value. Ele pode ser usado apenas com diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR. Para limpar um valor configurado anteriormente, use o valor none.

php_flag nome on|off

Para alterar valores booleanos, se usa php_flag.
Pode ser usada apenas com diretivas do tipo PHP_INI_ALL e PHP_INI_PERDIR.

php_admin_value nome valor

Este comando não pode ser usado com o .htaccess, apenas no httpd.conf.
Assim como php_value, só pode ser usado para valores não booleanos.

php_admin_flag nome on|off

Mesma coisa que o acima, porém para valores booleanos.

Cuidado!


As constantes do PHP só existem no PHP, ou seja, se você utilizar constantes como E_ALL ou E_NOTICE para configurar a diretiva error_reporting, você terá um erro, pois o valor não será identificado e será substituído por false. Para resolver este problema, utilize os valores bitmask destas contantes! ;)

Mudando configuração do PHP através do registro do Windows


Com o PHP rodando no Windoes é possível estabelecer configurações para cada diretório através do registro. Todos os valores de configuração ficam na chave HKLM\SOFTWARE\PHP\Per Directory Values, nas sub-chaves correspondentes aos caminhos dos diretórios.

Digamos que você tenha o diretório c:\inetpub\wwwroot. Todos os valores deste diretório devem ser guardados na chave HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot.

Os valores na chave devem ter o nome da diretiva de configuração do PHP e um valor string, assim como no último caso, constantes do PHP não valem aqui. Entretanto, apenas valores de configurações modificáveis no PHP_INI_USER podem ser definidos desta maneira, valores PHP_INI_PERDIR não podem.

Modo clássico!


Enfim... Pra fechar este artigo, vamos fugir um pouco do tópico geral e falar do ini_set(). É sempre bom você utiliza-lo se quiser modificar as diretivas diretamente do PHP ou se você não possui outro jeito de fazê-lo.

string ini_set(string $varname, string $newvalue)


Se quiser, entre no manual do php, no capítulo do ini_set() e veja que é bem simples de usar! :D

Conclusão


Concluímos, portanto, que não é mistério sobreescrever as configurações, mas sempre haverá um admin malvado que irá bloquear...

Portanto... Acho interessante você também dar uma lida em alguns artigos sobre oratória, pra criar uma certa lábia e conseguir convencê-los a abrir uma exceção!

Um grande abraço e fiquem com Deus!

 

Comente (02)




Comentário #1
Autor: battisti
Em: 28/02/2008 às 15:16

Uma dica muito boa, é possível com isso definir configurações independentes para cada site sem ter que criar um arquivo config.php e ficar carregando ele sempre nos scripts.

Comentário #2
Autor: Xorna
Em: 03/03/2008 às 01:14

Mazá rafa, justamente o que estavamos conversando outro dia, mas como vc mesmo ressaltou, temos administradores malvados... hehehe show de bola

Artigos Recentes

Rafael Jaques - PHPit 2007
Site sob Creative Commons - Alguns direitos reservados

Assine o RSS do PHPit! :)
Saiba onde tem o melhor preço antes de comprar