DPC2020 - Workshop day

Configurações em Execução

O comportamento dessas funções podem ser modificado pelas configurações do php.ini.

Opções de configuração do PHP
Nome Padrão Modificável Changelog
assert.active "1" PHP_INI_ALL  
assert.bail "0" PHP_INI_ALL  
assert.warning "1" PHP_INI_ALL  
assert.callback NULL PHP_INI_ALL  
assert.quiet_eval "0" PHP_INI_ALL  
assert.exception "0" PHP_INI_ALL Disponível desde PHP 7.0.0.
enable_dl "1" PHP_INI_SYSTEM Esta funcionalidade obsoleta será certamente removida no futuro.
max_execution_time "30" PHP_INI_ALL  
max_input_time "-1" PHP_INI_PERDIR Disponível desde PHP 4.3.0.
max_input_nesting_level "64" PHP_INI_PERDIR Disponível desde PHP 4.4.8 e PHP 5.2.3.
max_input_vars 1000 PHP_INI_PERDIR Disponível desde PHP 5.3.9.
magic_quotes_gpc "1" PHP_INI_PERDIR PHP_INI_ALL no PHP <= 4.2.3. Removido no PHP 5.4.0.
magic_quotes_runtime "0" PHP_INI_ALL Removido no PHP 5.4.0.
zend.enable_gc "1" PHP_INI_ALL Disponível desde PHP 5.3.0.
Para mais detalhes e definições dos modos PHP_INI_*, veja Onde uma configuração deve ser definida.

Uma rápida explicação das diretivas de configuração.

assert.active boolean

Ativa a avaliação de assert().

assert.bail boolean

Termina a execução de scripts se assert() falharem.

assert.warning boolean

Emite um warning para cada falha de assert.

assert.callback string

Função a chamar em caso de asserts falharem.

assert.quiet_eval boolean

Utilize a configuração atual de error_reporting() durante a avaliação de expressões assert. Se ativo então nenhum erro é mostrado (padrão é error_reporting(0)) nas avaliações. Se desativa erros são mostrados de acordo com as configurações de error_reporting()

assert.exception boolean

Lança uma exceção AssertionError no caso de um assert falhar.

enable_dl boolean

Essa diretiva é útil na versão nas versões para módulo Apache do PHP. Você pode configurar o carregamento dinâmico de extensões PHP com dl() por servidor virtual ou por diretório.

A razão principal para desligar o carregamento dinâmico é segurança. Com carregamento dinâmico é possível ignorar todas as restrições de open_basedir. O padrão é permitir carregamento dinâmico exceto no safe mode. Com o safe mode ativo é impossível utilizar dl().

max_execution_time integer

Isso configura o tempo máximo, em segundos, que um script é permitido executar antes de ser terminado. Isso ajuda a prevenir que scritps mal escritos de lotar os servidores. O padrão é de 30 segundos. Quando rodando o PHP a partir da linha de comando o padrão é zero 0.

O tempo máximo de execução não é afetado por chamadas de systema, operações em streams, etc. Veja a documentação da função set_time_limit() para mais detalhes.

Você não pode modificar essa configuração com ini_set() no safe mode. A única alternativa é desligar o safe mode ou modificando o limite no php.ini.

Seu servidor web pode ter outras configurações de timeout que também interrompam a execução do PHP. Apache possui uma diretiva Timeout e o IIS tem uma função de timeout CGI. Ambos com padrão de 300 seconds. Veja a documentação do servidor web para mais detalhes.

max_input_time integer

Configura o tempo máximo, em segundos, que um script é permitido dispender interpretando dados de entrada, como GET e POST. O cronômetro começa no momento que o PHP é chamado pelo servidor e termina quando a execução começa.

max_input_nesting_level integer

Configura a profundidade máxima de níveris das variáveis de entrada ( $_GET, $_POST).

max_input_vars integer

Configura quantas variáveis de entrada serão aceitas, com o limte aplicado a cada super global $_GET, $_POST e $_COOKIE separadamente). O uso dessa diretiva mitiga a possibilidade de ataques de negação de serviço que utilizam colisões de hash. Se houver mais variáveis do que o especificado nessa diretiva um E_WARNING é lançado, e variáveis de entrada adicionais são ignorados.

magic_quotes_gpc boolean
Aviso

Esta funcionalidade tornou-se OBSOLETA desde o PHP 5.3.0 e foi REMOVIDA desde o PHP 5.4.0.

Configura a utilização de magic_quotes para operações GPC (Get/Post/Cookie). Quanto magic_quotes está ativado, todos os caracteres ' (aspas simples), " (aspas duplas), \ (contra barra) e nulos são escapados com uma contra barra automaticamente.

Nota:

No PHP 4 as variáveis em $_ENV também são escapadas.

Nota:

Se a diretiva magic_quotes_sybase também estiver ativada então ela sobrescreverá completamente magic_quotes_gpc. Ter as duas diretivas ativadas significa que somente aspas simples são escapadas para ''. Aspas duplas, contra barras e nulos permanecerão intocados e não escapados.

Veja também get_magic_quotes_gpc()

magic_quotes_runtime boolean
Aviso

Esta funcionalidade tornou-se OBSOLETA desde o PHP 5.3.0 e foi REMOVIDA desde o PHP 5.4.0.

Se magic_quotes_runtime estiver ativo a maioria das funções que retornam dados de qualquer fonte externa, incluindo banco de dados e arquivos texto, terão as aspas escapadas com contra barra. Se magic_quotes_sybase também estiver ativo, então aspas simples são escapadas com aspas simples ao invez de contra barra.

Funções afetadas por magic_quotes_runtime (não incluidas aqui as funções do PECL):

zend.enable_gc boolean

Ativa ou desativa o coletor de refefências circulares.

add a note add a note

User Contributed Notes 4 notes

up
21
rubo77
6 years ago
I think it is important to mention that some distributions apply bugfixes for older versions so "Available since PHP 5.3.9" is not reliable, for example:
debian squeeze implemented the directive max_input_vars in PHP 5.3.3-7+squeeze7 (see http://ftp-master.metadata.debian.org/changelogs/main/p/php5/php5_5.3.3-7+squeeze17_changelog )
up
0
csongor at halmai dot hu
1 month ago
The max_input_vars setting is defined as "How many input variables may be accepted" but this is not completely correct. There is a +1 factor.

For example, if the value is 2 then the $_POST array can have up to 3 elements, if it is 1000 then it can have 1001 elements, and so on.

I want to stop the execution of the php code when there is a chance that some data was not received. Therefore, instead of relying on the standard E_WARNING, I do this in my code.

<?php
$max_input_vars
= ini_get('max_input_vars');
if (
count($_POST) === $max_input_vars + 1) {   // note the +1 here
   
throw new Exception();
}
?>

If the size of the $_POST array reaches the maximum then there is the chance that there was more data so it is better to stay on the safe side and increase the config value.
up
-4
horst at pepperzak.com
9 years ago
Caution: Although magic_quotes_gpc is flagged as dreprecated the default value is still "ON". So you will explicitly have to put

magic_quotes_gpc = Off

into your php.ini. Commeting out the magic_quotes_gpc-line will not turn magic_quotes_gpc off.
up
-86
Anonymous
6 years ago
The max_input_vars limit can be overcome by reading the input in raw, i.e.:
<?php
  $sRawInputData
= fopen( 'php://input' );
?>
To Top