Configurações em Execução

O comportamento destas funções é afetado pelas configurações do php.ini.

Opções de Configuração de Erros e de Registros
Nome Padrão Modificável Registro de Alterações
error_reporting NULL INI_ALL  
display_errors "1" INI_ALL  
display_startup_errors "1" INI_ALL Antes do PHP 8.0.0, o valor padrão era "0".
log_errors "0" INI_ALL  
log_errors_max_len "1024" INI_ALL Sem efeito a partir do PHP 8.0.0, removido a partir do PHP 8.1.0.
ignore_repeated_errors "0" INI_ALL  
ignore_repeated_source "0" INI_ALL  
report_memleaks "1" INI_ALL  
track_errors "0" INI_ALL Defasado a partir do PHP 7.2.0, removido a partir do PHP 8.0.0.
html_errors "1" INI_ALL  
xmlrpc_errors "0" INI_SYSTEM  
xmlrpc_error_number "0" INI_ALL  
docref_root "" INI_ALL  
docref_ext "" INI_ALL  
error_prepend_string NULL INI_ALL  
error_append_string NULL INI_ALL  
error_log NULL INI_ALL  
error_log_mode 0o644 INI_ALL Disponível a partir do PHP 8.2.0
syslog.facility "LOG_USER" INI_SYSTEM Disponível a partir do PHP 7.3.0.
syslog.filter "no-ctrl" INI_ALL Disponível a partir do PHP 7.3.0.
syslog.ident "php" INI_SYSTEM Disponível a partir do PHP 7.3.0.
Para mais detalhes e definições dos modos INI_*, consulte os Onde uma configuração deve ser definida.

Aqui está uma breve explicação das diretivas de configuração.

error_reporting int

Define o nível das reportagens de erros. O parâmetro é ou um inteiro representando um campo de bits ou constantes nomeadas. Os níveis e constantes de reportagens de erros estão descritos em Constantes Pré-definidas e no arquivo php.ini. Para definir em tempo de execução, use a função error_reporting(). Consulte também a diretiva display_errors.

O padrão é E_ALL.

Antes do PHP 8.0.0, o valor padrão era: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED. Isto significa que os diagnósticos de nível E_NOTICE, E_STRICT e E_DEPRECATED não eram mostrados.

Nota: Constantes do PHP fora do PHP

Usar constantes do PHP fora do PHP, como no httpd.conf, não terão significado algum, portanto, nesses casos, os valores int são necessários. E, como níveis de erro serão adicionados ao longo do tempo, o valor máximo (para E_ALL) provavelmente será alterado. Portanto, no lugar de E_ALL, considere usar um valor maior para cobrir todos os campos de bits, tanto os de hoje como os do futuro, um valor numérico como 2147483647 (inclui todos os erros, não apenas E_ALL).

display_errors string

Este parâmetro determina se os erros devem ser mostrados na tela como parte da saída ou se devem ser ocultados do usuário.

O valor "stderr" envia os erros para stderr em vez de stdout.

Nota:

Este é um recurso para dar suporte ao desenvolvimento e nunca deve ser usado em sistemas de produção (por exemplo, sistemas conectados à internet).

Nota:

Embora display_errors possa ser configurado em tempo de execução (com ini_set()), ele não terá nenhum efeito se o script tiver erros fatais. Isso ocorre porque a ação desejada em tempo de execução não é executada.

display_startup_errors bool

Mesmo quando display_errors está ativado, erros que ocorrem durante a sequência de inicialização do PHP não são exibidos. É altamente recomendável manter display_startup_errors desativado, exceto para depuração.

log_errors bool

Informa se as mensagens de erro de script devem ser gravadas no registro de erros do servidor ou no local indicado por error_log. Essa opção é, portanto, específica do servidor.

Nota:

É altamente aconselhável usar o registro de erros em vez de exibir erros em sites de produção.

log_errors_max_len int

Define o comprimento máximo de log_errors em bytes. Em error_log, informações sobre a fonte são adicionadas. O padrão é 1024, e 0 permite não aplicar limite de comprimento. Esse tamanho é aplicado a erros registrados, erros exibidos e também a $php_errormsg, mas não a funções chamadas explicitamente como error_log().

Quando um int é usado, o valor é medido em bytes. A notação abreviada, como descrita nesta FAQ, também pode ser usada.
ignore_repeated_errors bool

Não registra mensagens repetidas. Erros repetidos devem ocorrer no mesmo arquivo e na mesma linha, a menos que ignore_repeated_source seja definido como verdadeiro.

ignore_repeated_source bool

Ignora a fonte da mensagem quando estiver ignorando mensagens repetidas. Quando esta configuração estiver On, não serão registrados erros com mensagens repetidas de arquivos ou linhas diferentes.

report_memleaks bool

Se este parâmetro estiver definido como On (o padrão), este parâmetro mostrará um relatório de vazamentos de memória detectados pelo gerenciador de memória do Zend. Este relatório será enviado para stderr em plataformas Posix. No Windows, ele será enviado ao depurador usando o OutputDebugString() e poderá ser visualizado com ferramentas como » DbgView. Este parâmetro só tem efeito em uma compilação de depuração e se error_reporting incluir E_WARNING na lista de erros permitidos.

track_errors bool

Se habilitado, a última mensagem de erro estará sempre presente na variável $php_errormsg.

html_errors bool

Se ativado, as mensagens de erro incluirão tags HTML. O formato para erros de HTML produz mensagens clicáveis que direcionam o usuário para uma página descrevendo o erro ou a função que está causando o erro. Essas referências são afetadas por docref_root e docref_ext.

Se desativado, a mensagem de erro será apenas texto simples.

xmlrpc_errors bool

Se ativado, desativa o relatório de erros normal e formata os erros como mensagem de erro XML-RPC.

xmlrpc_error_number int

Usado como o valor do elemento faultCode do XML-RPC.

docref_root string

O novo formato de erro contém uma referência a uma página que descreve o erro ou a função que está causando o erro. No caso de páginas de manual, pode-se baixar o manual no idioma próprio e definir esta diretiva ini para a URL da cópia local. Se a cópia local do manual puder ser alcançada por "/manual/" pode-se simplesmente usar docref_root=/manual/. Além disso, é necessário definir docref_ext para corresponder às extensões de arquivo da cópia local docref_ext=.html. É possível usar referências externas. Por exemplo, pode-se usar docref_root=http://manual/en/ ou docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"

Na maioria das vezes, é desejado que o valor docref_root termine com uma barra "/". Mas veja o segundo exemplo acima, que não tem nem precisa dela.

Nota:

Este é um recurso para dar suporte ao desenvolvimento, pois facilita a pesquisa da descrição de uma função. No entanto, nunca deve ser usado em sistemas de produção (por exemplo, sistemas conectados à internet).

docref_ext string

Consulte docref_root.

Nota:

O valor de docref_ext deve começar com um ponto ".".

error_prepend_string string

String a ser mostrado antes de uma mensagem de erro. Usado apenas quando a mensagem de erro é mostrada na tela. O propósito principal é prover a capacidade de prefixar uma marcação HTML adicional à mensagem de erro.

error_append_string string

String para mostrar após uma mensagem de erro. Usado apenas quando a mensagem de erro é mostrada na tela. O propósito principal é prover a capacidade de posfixar uma marcação HTML adicional à mensagem de erro.

error_log string

Nome do arquivo onde os erros de script devem ser registrados. O arquivo deve ter permissão de escrita pelo usuário do servidor da web. Se o valor especial syslog for usado, os erros serão enviados ao registrador de erros do sistema. No Unix, isso significa syslog(3) e no Windows significa o Log de Eventos. Veja também: syslog(). Se esta diretiva não estiver definida, os erros serão enviados para o registrador de erros SAPI. Por exemplo, é um log de erros no Apache ou stderr no CLI. Consulte também error_log().

error_log_mode int

Modo de arquivo para o arquivo definido em error_log.

syslog.facility string

Especifica qual tipo de programa está registrando a mensagem. Apenas efetivo se error_log estiver definido como "syslog".

syslog.filter string

Especifica o tipo de filtro para filtrar as mensagens registradas. Caracteres permitidos são passados sem modificações; todos os outros são escritos em sua representação hexadecimal prefixados com \x.

  • all - a string registrada será partida nos caracteres de novas linhas, e todos os caracteres serão passados inalterados
  • ascii - a string registrada será partida nos caracteres de novas linhas, e qualquer caractere ASCII de 7 bits não imprimível será escapado
  • no-ctrl - a string registrada será partida nos caracteres de novas linhas, e qualquer caractere não imprimível será escapado
  • raw - todos os caracteres são passados ao registrador do sistema logger inalterados, sem separação novas linhas (idêntico ao PHP antes do 7.3)
Esta configuração irá afetar o registro através de error_log definido para "syslog" e chamadas a syslog().

Nota:

O tipo de filtro raw está disponível a partir do PHP 7.3.8 e do PHP 7.4.0.

Esta diretiva não é suportada no Windows.
syslog.ident string

Especifica a string de identificação que é anexada a todas as mensagens. Somente é efetivo se error_log estiver definido como "syslog".

add a note add a note

User Contributed Notes 5 notes

up
44
cjakeman at bcs dot org
15 years ago
Using
<?php ini_set('display_errors', 1); ?>
at the top of your script will not catch any parse errors. A missing ")" or ";" will still lead to a blank page.

This is because the entire script is parsed before any of it is executed. If you are unable to change php.ini and set

display_errors On

then there is a possible solution suggested under error_reporting:

<?php
error_reporting
(E_ALL);
ini_set("display_errors", 1);
include(
"file_with_errors.php");
?>


[Modified by moderator]

You should also consider setting error_reporting = -1 in your php.ini and display_errors = On if you are in development mode to see all fatal/parse errors or set error_log to your desired file to log errors instead of display_errors in production (this requires log_errors to be turned on).
up
17
ohcc at 163 dot com
7 years ago
If you set the error_log directive to a relative path, it is a path relative to the document root rather than php's containing folder.
up
1
Roger
4 years ago
When `error_log` is set to a file path, log messages will automatically be prefixed with timestamp [DD-MMM-YYYY HH:MM:SS UTC].  This appears to be hard-coded, with no formatting options.
up
0
php dot net at sp-in dot dk
9 years ago
There does not appear to be a way to set a tag / ident / program for log entries in the ini file when using error_log=syslog.  When I test locally, "apache2" is used.
However, calling openlog() with an ident parameter early in your script (or using an auto_prepend_file) will make PHP use that value for all subsequent log entries. closelog() will restore the original tag.

This can be done for setting facility as well, although the original value does not seem to be restored by closelog().
up
-20
jaymore at gmail dot com
7 years ago
Document says
So in place of E_ALL consider using a larger value to cover all bit fields from now and well into the future, a numeric value like 2147483647 (includes all errors, not just E_ALL).

But it is better to set "-1" as the E_ALL value.
For example, in httpd.conf or .htaccess, use
php_value error_reporting -1
to report all kind of error without be worried by the PHP version.
To Top