Mostrar todos os erros em PHP
-
Use a função
error_reporting('E_ALL')
e a funçãoini_set()
junto com a diretivadisplay_errors
para exibir o erro de aviso -
Use a função
error_reporting('-1')
e a funçãoini_set()
junto com as diretivasdisplay_errors
edisplay_startup_errors
para exibir erros -
Modifique as diretivas no arquivo
php.ini
para exibir todos os erros, incluindo erros de análise em PHP
Apresentaremos uma maneira de exibir erros no script PHP usando a função error_reporting()
e a função ini_set()
. O primeiro método relata o erro enquanto o segundo método substitui o arquivo php.ini
ou o arquivo de configuração do Apache e ativa para exibir os erros apenas para o script atual.
Demonstraremos outra maneira de exibir erros de PHP usando as mesmas funções - a função error_reporting()
e a função ini_set()
como no primeiro método. O ponto crítico que diferencia este método do primeiro é que ele usa outra função ini_set()
com a diretiva display_startup_errors
e a função error_reporting()
leva um valor inteiro como argumento.
Apresentaremos uma solução permanente para mostrar todos os erros do PHP, mudando a configuração no arquivo php.ini
. Os dois métodos mencionados acima não ajudarão a exibir os erros de análise, como chaves e ponto-e-vírgulas ausentes.
Use a função error_reporting('E_ALL')
e a função ini_set()
junto com a diretiva display_errors
para exibir o erro de aviso
Podemos usar a função error_reporting()
para relatar todos os tipos de erros no script PHP. Para isso, usamos a constante nomeada E_ALL
como o argumento na função. Ele relata todos os tipos de erros de PHP. E então, podemos usar a função ini_set()
para exibir os erros relatados. A função define a diretiva display_errors
como true. Assim, ele define a configuração no arquivo php.ini
para definir a visibilidade dos erros. No entanto, o valor original das diretivas será restaurado no arquivo php.ini
após a execução do script atual.
Para demonstração, escreva error_reporting(E_ALL)
como a primeira linha do código do script. Defina display_errors
para 1
na função ini_set
. Faça eco de uma mensagem como 'This is a warning errorr'
. Use a função include()
para incluir um arquivo externo chamado file.php
. Em seguida, execute o script.
O exemplo abaixo tenta exibir um erro de aviso no PHP. Este tipo de erro notifica que há algum problema no script sem interromper a execução do script. O exemplo inclui o arquivo file.php
no script. Como esse arquivo não existe na pasta raiz, o script não carregará o arquivo e exibirá os erros. Como este é um erro de aviso, a instrução echo
é executada junto com os erros. Para saber mais sobre a função error_reporting()
, visite o manual do PHP
Código de exemplo:
# php 7.*
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "This is a warning error";
include ("file.php");
?>
Resultado:
This is a warning error
**Warning**: include(file.php): failed to open stream: No such file or directory in **/var/www/html/index.php** on line **5**
**Warning**: include(): Failed opening 'file.php' for inclusion (include_path='.:/usr/share/php') in **/var/www/html/index.php** on line **5**
Use a função error_reporting('-1')
e a função ini_set()
junto com as diretivas display_errors
e display_startup_errors
para exibir erros
A função error_reporting()
também leva um valor inteiro como argumento. Podemos usar este método para exibir erros em PHP. Existem muitos níveis de erros no PHP. O nível -1
denota todos os erros de PHP. Passar o valor -1
funcionará nas versões futuras do PHP, mesmo com novos níveis e constantes. Às vezes, a diretiva display_errors
na função ini_set()
nem sempre trata os erros encontrados enquanto o PHP é iniciado. Nesses casos, podemos usar display_startup_errors
para exibir os erros.
Por exemplo, defina os direcitves da função ini_set()
como display_startup_errors
e display_errors
. Defina-os como true
denotando por 1
na função ini_set()
. Defina error_reporting
como -1
. Atribua um valor de 10 a uma variável $a
e imprima uma variável $b
.
No exemplo abaixo, o script encontra um erro de aviso. O código tenta imprimir a variável indefinida. Para aprender mais sobre a função ini_set()
, visite o manual do PHP.
Código de exemplo:
#php 7.x
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
$a = 10;
echo $b;
?>
Resultado:
**Notice**: Undefined variable: b in **/var/www/html/index.php** on line **6**
Modifique as diretivas no arquivo php.ini
para exibir todos os erros, incluindo erros de análise em PHP
Podemos modificar as diretivas no arquivo php.ini
para exibir erros de PHP quando o acima mencionado não funcionar. O arquivo php.ini
contém as configurações padrão necessárias ao executar um script PHP. Os métodos mencionados acima alteram o valor das diretivas apenas em tempo de execução, enquanto a modificação do arquivo php.ini
altera os valores permanentemente. No entanto, não devemos seguir essa prática no nível de produção. Verifique o manual do PHP para saber mais sobre o arquivo de configuração em PHP.
Para alterar o valor das diretivas do arquivo php.ini
, primeiro localize o arquivo em seu sistema. Use o seguinte script.
#php 7.x
<?php
phpinfo();
?>
Localize o ficheiro Loaded Configuration File
, e você pode ver a localização do arquivo php.ini
. No arquivo, localize as diretivas display_errors
e display_startup_errors
e altere o valor para on
. Localize error_reporting
e mude para error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING
. Em seguida, reinicie o servidor da web Apache.
Por exemplo, no arquivo PHP, defina o error_reporting(-1)
. Atribua um valor Orange
à variável $a
, mas não escreva um ponto e vírgula depois dela. Imprima a variável em outra linha.
Na seção de saída do exemplo de código, o erro de análise é encontrado e exibido. Portanto, configurar o arquivo php.ini
pode exibir os erros de análise também.
Exemplo de código:
#php 7.x
<?php
error_reporting(-1);
$a = "Orange"
echo $a;
?>
Resultado:
**Parse error**: syntax error, unexpected 'echo' (T_ECHO) in **/var/www/html/index.php** on line **6**
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn