Desenvolvimento e bases de dados

Personalizar a configuração de PHP com o ficheiro .htaccess

Revisto a 3 min de leitura PHP .htaccess

A maioria dos valores de PHP pode ser alterada a partir do ficheiro .htaccess que está em public_html ou na pasta onde tiver a sua aplicação. Se não existir, crie um ficheiro vazio com esse nome.

Os valores mais habituais (memory_limit, upload_max_filesize, post_max_size, max_execution_time, max_input_vars) também podem ser alterados sem mexer em ficheiros, a partir do PHP na área de cliente ou no cPanel. O .htaccess é útil quando quer um valor diferente apenas para um site ou pasta, ou quando a opção não aparece aí.

Como se faz

Acrescente no início do .htaccess uma linha por cada valor que quiser alterar, com esta sintaxe:

php_value directiva nuevo_valor

Em que directiva é o parâmetro de PHP e nuevo_valor o valor que quer aplicar. Por exemplo, para aumentar max_input_vars para 10000 (o que costumam pedir o PrestaShop ou o WooCommerce com muitas variações de produto):

php_value max_input_vars 10000

Pode acrescentar tantas linhas quantas precisar:

php_value memory_limit 512M
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300

Para as opções que se ativam ou desativam (On/Off), use php_flag:

php_flag display_errors Off

A alteração aplica-se no momento, sem reiniciar nada. Aplica-se a essa pasta e a todas as suas subpastas.

Confirmar que foi aplicada

Crie na mesma pasta um ficheiro info.php com:

<?php phpinfo();

Abra-o no navegador (https://tudominio.com/info.php), procure a diretiva e veja a coluna Local Value. Apague o ficheiro assim que confirmar: mostra dados internos do servidor.

Se der erro 500

Se, depois de acrescentar a linha, o site mostrar um erro 500, retire a linha: há um erro de escrita ou esse site usa uma versão de PHP que não aceita php_value no .htaccess. Nesse caso, crie na mesma pasta um ficheiro chamado .user.ini com os valores em formato php.ini:

max_input_vars = 10000
memory_limit = 512M

As alterações no .user.ini podem demorar até 5 minutos a ser aplicadas.

Algumas diretivas não podem ser alteradas a partir de uma pasta (por exemplo, disable_functions), e nenhum valor de PHP amplia os recursos do seu plano: se definir memory_limit acima da memória do plano, prevalece o limite do plano.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.