Configurações em Execução

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

Opções de Configuração de Erros e de Logs
Nome Padrão Modificável Changelog
error_reporting NULL PHP_INI_ALL  
display_errors "1" PHP_INI_ALL  
display_startup_errors "0" PHP_INI_ALL  
log_errors "0" PHP_INI_ALL  
log_errors_max_len "1024" PHP_INI_ALL Disponível a partir do PHP 4.3.0.
ignore_repeated_errors "0" PHP_INI_ALL Disponível a partir do PHP 4.3.0.
ignore_repeated_source "0" PHP_INI_ALL Disponível a partir do PHP 4.3.0.
report_memleaks "1" PHP_INI_ALL Disponível a partir do PHP 4.3.0.
track_errors "0" PHP_INI_ALL  
html_errors "1" PHP_INI_ALL PHP_INI_SYSTEM in PHP <= 4.2.3.
xmlrpc_errors "0" PHP_INI_SYSTEM Disponível a partir do PHP 4.1.0.
xmlrpc_error_number "0" PHP_INI_ALL Disponível a partir do PHP 4.1.0.
docref_root "" PHP_INI_ALL Disponível a partir do PHP 4.3.0.
docref_ext "" PHP_INI_ALL Disponível a partir do PHP 4.3.2.
error_prepend_string NULL PHP_INI_ALL  
error_append_string NULL PHP_INI_ALL  
error_log NULL PHP_INI_ALL  
syslog.facility "LOG_USER" PHP_INI_SYSTEM Disponível a partir do PHP 7.3.0.
syslog.filter "no-ctrl" PHP_INI_ALL Disponível a partir do PHP 7.3.0.
syslog.ident "php" PHP_INI_SYSTEM Disponível a partir do PHP 7.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.

error_reporting integer

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

A partir do PHP 5.3, o valor padrão é E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED. Esta configuração não mostra os níveis de erro E_NOTICE, E_STRICT e E_DEPRECATED. Você pode querer mostrá-los durante o desenvolvimento. Antes do PHP 5.3.0, o valor padrão é E_ALL & ~E_NOTICE & ~E_STRICT. No PHP 4, o valor padrão é E_ALL & ~E_NOTICE.

Nota:

Habilitar o E_NOTICE durante o desenvolvimento traz alguns benefícios. Para fins de depuração: as mensagens NOTICE irão avisá-lo sobre possíveis erros em seu código. Por exemplo, o uso de valores não atribuídos é avisado. É extremamente útil para encontrar erros de digitação e para economizar tempo de depuração. As mensagens NOTICE irão avisá-lo sobre estilo ruim. Por exemplo, $arr[item] é melhor ser escrito como $arr['item'] já que o PHP tenta tratar "item" como constante. Se não for uma constante, o PHP assume que é uma string para o índice do array.

Nota:

No PHP 5, um novo nível de erro E_STRICT está disponível. Antes do PHP 5.4.0, E_STRICT não estava incluído no E_ALL, portanto, você teria que habilitar explicitamente esse tipo de nível de erro no PHP < 5.4.0. Habilitar o E_STRICT durante o desenvolvimento traz alguns benefícios. As mensagens STRICT fornecem sugestões que podem ajudar a garantir a melhor interoperabilidade e compatibilidade futura do seu código. Essas mensagens podem incluir coisas como chamar estaticamente métodos não-estáticos, definir propriedades em uma definição de classe compatível enquanto estiver definido em um trait usado e, antes do PHP 5.3, alguns recursos descontinuados emitiriam erros E_STRICT, como atribuir objetos por referência na instanciação.

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 integer 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

Isso determina se os erros devem ser impressos 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. O valor está disponível a partir do PHP 5.2.4. Em versões anteriores, essa diretiva era do tipo boolean.

Nota:

Este é um recurso para dar suporte ao seu 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 em tempo de execução desejada não é executada.

display_startup_errors boolean

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 boolean

Informa se as mensagens de erro de script devem ser registradas no log de erros do servidor ou no error_log. Essa opção é, portanto, específica do servidor.

Nota:

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

log_errors_max_len integer

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 não aplica um comprimento máximo. Esse tamanho é aplicado a erros registrados, erros exibidos e também a $php_errormsg, mas não à funções chamadas explicitamente como error_log().

Quando um integer é utilizado, o valor é medido em bytes. A resumida notação, como descrito neste FAQ, pode também ser usada.
ignore_repeated_errors boolean

Não registrar 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 boolean

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

report_memleaks boolean

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 o » DbgView. Este parâmetro só tem efeito em uma compilação de depuração, e se error_reporting incluir E_WARNING na lista de permitidos.

track_errors boolean

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

html_errors boolean

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 boolean

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

xmlrpc_error_number integer

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, você pode baixar o manual em seu idioma e definir esta diretiva ini para a URL da sua cópia local. Se a sua cópia local do manual pode ser alcançada por "/manual/" você pode simplesmente usar docref_root=/manual/. Além disso, você precisa definir docref_ext para corresponder às extensões de arquivo de sua cópia docref_ext=.html. É possível usar referências externas. Por exemplo, você pode 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, você quer 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 seu 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

Veja docref_root.

Nota:

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

error_prepend_string string

String para mostrar antes de uma mensagem de erro.

error_append_string string

String para mostrar após uma 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. Veja também error_log().

syslog.facility string

Especifica qual tipo de programa está registrando a mensagem. Somente é 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 prefixado com \x. Existem três tipos de filtros suportados:

  • all – todos os caracteres
  • no-ctrl – todos os caracteres, exceto os caracteres de controle
  • ascii – todos os caracteres ASCII imprimíveis e NL
Somente é efetivo se error_log estiver definido como "syslog".

syslog.ident string

Especifica a string ident 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
14
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
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
-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
-21
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