Mostrar todos os erros em PHP
-
Use a função
error_reporting('E_ALL')e a funçãoini_set()junto com a diretivadisplay_errorspara exibir o erro de aviso -
Use a função
error_reporting('-1')e a funçãoini_set()junto com as diretivasdisplay_errorsedisplay_startup_errorspara exibir erros -
Modifique as diretivas no arquivo
php.inipara 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