Latest web development tutorials
×

PHP curso

PHP curso PHP breve introdução PHP instalar PHP gramática PHP variável PHP echo/print PHP Tipos de dados PHP constante PHP corda PHP operadores PHP If...Else PHP Switch PHP ordem PHP Classificação de uma matriz PHP superglobais PHP While circulação PHP For circulação PHP função PHP Variáveis ​​mágicas PHP namespaces PHP Object-Oriented

PHP formulário

PHP formulário PHP Autenticação de formulários PHP formulário - campos obrigatórios PHP formulário - -mail de verificação e URL PHP instância de formulário completo PHP $_GET variável PHP $_POST variável

PHP Tutorial avançado

PHP arrays multidimensionais PHP data PHP conter PHP arquivo PHP Carregar arquivo PHP Cookie PHP Session PHP E-mail PHP segurança E-mail PHP Error PHP Exception PHP filtro PHP Filtro avançado PHP JSON

PHP 7 novos Recursos

PHP 7 novos Recursos

PHP banco de dados

PHP MySQL breve introdução PHP MySQL conexão PHP MySQL Criação de um banco de dados PHP MySQL Criar uma tabela de dados PHP MySQL inserir dados PHP MySQL Inserir dados múltiplos PHP MySQL instruções preparadas PHP MySQL ler dados PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX breve introdução AJAX PHP AJAX banco de dados AJAX XML AJAX busca em tempo real AJAX RSS Reader AJAX voto

PHP manual de referência

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Processamento de imagem PHP RESTful

PHP Tratamento de erros

No PHP, a manipulação de erro padrão é muito simples. Uma mensagem de erro é enviado para o navegador, a mensagem com o nome do arquivo, número da linha e uma descrição da mensagem de erro.


PHP Tratamento de erros

Quando a criação de scripts e aplicativos da Web, tratamento de erros é uma parte importante. Se o seu código não possui código de verificação de erro, o programa pode parecer muito pouco profissional, mas também abre a porta para os riscos de segurança.

Este tutorial apresenta algumas das método de detecção de erros mais importante em PHP.

Vamos explicar seus diferentes métodos de tratamento de erros:

  • Simple "die ()" declaração
  • Erros personalizados e gatilhos de erro
  • Relatório de erros

Função Usando o die (): Básico Tratamento de erros

O primeiro exemplo mostra um script simples que abre um arquivo de texto:

<?php
$file=fopen("welcome.txt","r");
?>

Se o arquivo não existir, você poderá obter um erro como este:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in /www/w3big/test/test.php on line 2

Para impedir que os usuários recebendo uma mensagem de erro semelhante ao anterior, examinamos o arquivo antes de acessar o arquivo existe:

<?php
if(!file_exists("welcome.txt"))
{
	die("文件不存在");
}
else
{
	$file=fopen("welcome.txt","r");
}
?>

Agora, se o arquivo não existir, você receberá esta mensagem de erro semelhante à:

文件不存在

Comparado com o código anterior, o código acima é mais eficiente, uma vez que utiliza um mecanismo de tratamento de erros simples para encerrar o script após o erro.

No entanto, basta terminar o script nem sempre é o caminho certo. Vejamos funções alternativas PHP para lidar com erros.


Criando um identificador de erro personalizada

Criar um manipulador de erro personalizada é bastante simples. Nós simplesmente criar uma função especial que pode ser chamado quando ocorre um erro no PHP.

Esta função deve ser capaz de lidar com pelo menos dois parâmetros (nível de erro e mensagem de erro), mas pode aceitar até cinco parâmetros (opcionalmente: arquivo, linha de número e de contexto de erro):

gramática

error_function(error_level,error_message,
error_file,error_line,error_context)
parâmetros descrição
error_level Necessário. Erro é definido como um nível de relatório de erros definido pelo usuário. Deve ser um número. Veja a tabela a seguir: nível de relatório de erro.
mensagem_de_erro Necessário. mensagem de erro de erro definida pelo usuário declarou.
error_file Opcional. ocorreu nome de arquivo de erro especificado.
ERROR_LINE Opcional. número da linha predeterminada ocorreu o erro.
error_context Opcional. Especifica um array contendo todas as variáveis ​​quando ocorre um erro em uso e seus valores.

nível de relatório de erro

Estes níveis de relatório de erro são os diferentes tipos de erros erro de processamento personalizado Handler:

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

Agora, vamos criar uma função para manipular erros:

function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

O código acima é uma função de tratamento de erros simples. Quando ele é acionado, ele vai ficar o nível de erro e mensagens de erro. Em seguida, ele emite o nível de erro e mensagem e termina o script.

Agora, criamos uma função de tratamento de erros, precisamos determinar quando acionar a função.


manipulador de erro Configuração

manipulador de erro padrão do PHP é um manipulador de erro embutido. Vamos transformar a função acima da duração manipulador de erro padrão do script.

Você pode modificar o manipulador de erro para que ele aplicado somente a algum erro, de modo que o script pode haver maneiras diferentes de lidar com erros diferentes. No entanto, neste caso, temos a intenção de usar para todos Handler erros erro nosso costume:

set_error_handler("customError");

Desde que nós queremos que a nossa função personalizada para lidar com todos os erros, set_error_handler () só precisava de um parâmetro, você pode adicionar um segundo argumento para especificar um nível de erro.

Exemplos

Ao tentar variável de saída que não existe, para testar o manipulador de erro:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr";
}

// 设置错误处理函数
set_error_handler("customError");

// 触发错误
echo($test);
?>

A saída do código de cima é o seguinte:

Error: [8] Undefined variable: test


Erro de gatilho

No script o usuário dados de localização de entrada quando a entrada do usuário não é acionado quando um erro é útil. No PHP, isso é feito através da função trigger_error () para completar.

Exemplos

Neste exemplo, se a variável de "teste" é maior do que "1", ocorre um erro:

<?php
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1");
}
?>

A saída do código de cima é o seguinte:

Notice: 变量值必须小于等于 1
in /www/test/w3big.php on line 5

Você pode acionar um erro no script em qualquer lugar, através da adição de um segundo parâmetro, você pode especificar o nível de erro é acionado.

Possíveis tipos de erros:

  • E_USER_ERROR - Fatal erro de tempo de execução gerado pelo usuário. erro irrecuperável. A execução do script é interrompida.
  • E_USER_WARNING - aviso de tempo de execução gerado pelo usuário não-fatal. A execução do script não é interrompida.
  • E_USER_NOTICE - padrão. aviso de tempo de execução gerado pelo usuário. Quando o script encontrado um erro pode ocorrer, mas também pode ocorrer em operação normal roteiro.

Exemplos

Neste exemplo, se a variável de "teste" é maior do que "1", ocorre E_USER_WARNING erro. Se isso acontecer E_USER_WARNING, usaremos nosso manipulador de erro personalizada e terminar o script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

A saída do código de cima é o seguinte:

Error: [512] 变量值必须小于等于 1
脚本结束

Agora que já aprendeu a criar o seu próprio erro, e como acioná-los, vamos olhar para o log de erro.


Log de erro

Em caso de incumprimento, de acordo com a configuração error_log é definido no php.ini, PHP envia um sistema de gravação de erro para gravar ou servidor de arquivos. Ao utilizar o error_log () função que você pode enviar logs de erro para um arquivo especificado ou um destino remoto.

Ele envia uma mensagem de erro a si mesmo por e-mail é uma boa maneira de ser notificado de erros específicos.

mensagem de erro é enviada por e-mail

No exemplo a seguir, se ocorrer um erro específico, vamos enviar um e-mail com uma mensagem de erro e terminar o script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "已通知网站管理员";
	error_log("Error: [$errno] $errstr",1,
	"[email protected]","From: [email protected]");
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

A saída do código de cima é o seguinte:

Error: [512] 变量值必须小于等于 1
已通知网站管理员

As mensagens recebidas a partir do código de cima é o seguinte:

Error: [512] 变量值必须小于等于 1

Este método não é adequado para todos os erros. erro convencional devem ser usando o sistema de log PHP padrão para gravação no servidor.