El mejor tutorial de PHP tratamiento de errores en 2024. En este tutorial podrás aprender PHP tratamiento de errores,Manejo básico de error: Uso de la función die (),Creación de un controlador de errores personalizado,gramática,nivel del reporte,Configuración de controlador de errores,Ejemplos,Error gatillo,Ejemplos,Ejemplos,Registro de errores,Mensaje de error se envía por correo electrónico,

PHP tratamiento de errores

En PHP, el manejo de errores por defecto es muy simple. Un mensaje de error se envía al navegador, el mensaje con el nombre del archivo, número de línea y una descripción del mensaje de error.


PHP tratamiento de errores

Al crear secuencias de comandos y aplicaciones Web, gestión de errores es una parte importante. Si el código carece de código de comprobación de errores, el programa puede parecer muy poco profesional, sino que también abre la puerta a riesgos de seguridad.

Este tutorial presenta algunos de los método de detección de error más importante en PHP.

Vamos a explicar sus diferentes métodos de tratamiento de errores:

  • Simple "die ()" declaración
  • errores personalizados y disparadores de error
  • Informe de errores

Manejo básico de error: Uso de la función die ()

El primer ejemplo muestra una secuencia de comandos simple que se abre un archivo de texto:

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

Si no existe el archivo, recibirá un error 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 evitar que los usuarios un mensaje de error similar a la anterior, se analizó el archivo antes de acceder al archivo existe:

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

Ahora bien, si no existe el archivo, recibirá este mensaje de error similar al siguiente:

文件不存在

En comparación con el código anterior, el código de seguridad es más eficiente, ya que utiliza un simple mecanismo de manejo de errores para terminar la secuencia de comandos después de que el error.

Sin embargo, simplemente termina el script no es siempre el camino correcto. Veamos las funciones de PHP alternativas para el manejo de errores.


Creación de un controlador de errores personalizado

Crear un controlador de errores personalizado es bastante simple. Sólo tendrá que crear una función especial que se puede llamar cuando se produce un error en PHP.

Esta función debe ser capaz de manejar al menos dos parámetros (nivel de error y mensaje de error), pero puede aceptar hasta cinco parámetros (opcionalmente: archivo, número de línea y el contexto del error):

gramática

error_function(error_level,error_message,
error_file,error_line,error_context)
parámetros descripción
error_level Requerido. De error se define como un nivel de informe de error definido por el usuario. Debe ser un número. Consulte la tabla siguiente: nivel de reporte de errores.
mensaje_error Requerido. mensaje de error de error definido por el usuario indicó.
error_file Opcional. ocurrió el nombre de archivo de error especificado.
ERROR_LINE Opcional. número de línea predeterminada se produjo el error.
error_context Opcional. Especifica una matriz que contiene todas las variables cuando se produce un error en el uso y sus valores.

nivel del reporte

Estos niveles de informes de error son los diferentes tipos de errores error de procesamiento de encargo 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 的一部分)

Ahora, vamos a crear una función para controlar los errores:

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

El código de seguridad es una simple función de control de errores. Cuando se activa, se obtendrá el nivel de error y mensajes de error. A continuación, emite el nivel de error y el mensaje y termina el script.

Ahora, hemos creado una función de control de errores, tenemos que determinar cuándo se activará la función.


Configuración de controlador de errores

gestor de errores por defecto de PHP es un gestor de errores incorporado. Vamos a transformar la función por encima de la duración gestor de errores por omisión del script.

Puede modificar el controlador de errores por lo que se aplica sólo a algún error, por lo que el guión puede haber diferentes maneras de manejar diferentes errores. Sin embargo, en este caso, tenemos la intención de utilizar para todos Handler errores Error nuestra costumbre:

set_error_handler("customError");

Como queremos que nuestra función personalizada para manejar todos los errores, set_error_handler () sólo se necesita un parámetro, se puede añadir un segundo argumento para especificar un nivel de error.

Ejemplos

Al tratar de variable de salida que no existe, para probar el controlador de errores:

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

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

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

La salida del código anterior es el siguiente:

Error: [8] Undefined variable: test


Error gatillo

En la secuencia de comandos que el usuario ubicación de entrada de datos cuando la entrada de usuario no se dispara cuando un error es útil. En PHP, esto se realiza por la función trigger_error () para completar.

Ejemplos

En este ejemplo, si la variable "prueba" es mayor que "1", se produce un error:

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

La salida del código anterior es el siguiente:

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

Puede provocar un error en la secuencia de comandos en cualquier lugar, mediante la adición de un segundo parámetro, puede especificar el nivel de error se dispara.

Los posibles tipos de errores:

  • E_USER_ERROR - Error en tiempo de ejecución generados por los usuarios fatal. Error irrecuperable. la ejecución del script se interrumpe.
  • E_USER_WARNING - no fatal generado por los usuarios de alerta en tiempo de ejecución. la ejecución del script no se interrumpe.
  • E_USER_NOTICE - por defecto. Aviso de tiempo de ejecución generados por el usuario. Cuando el guión encontró un error puede ocurrir, pero también puede ocurrir en la escritura de la operación normal.

Ejemplos

En este ejemplo, si la variable "prueba" es mayor que "1", se produce un error E_USER_WARNING. Si esto sucede E_USER_WARNING, utilizaremos nuestro manejador de error personalizado y poner fin a la secuencia de comandos:

<?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);
}
?>

La salida del código anterior es el siguiente:

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

Ahora que hemos aprendido cómo crear su propio error, y cómo activar ellos, vamos a ver el registro de errores.


Registro de errores

En caso de incumplimiento, de acuerdo con la configuración error_log en el php.ini, PHP envía un sistema de registro de errores para grabar o servidor de archivos. Al utilizar el error_log () la función que puede enviar registros de errores en un archivo especificado o un destino remoto.

Se envía un mensaje de error a sí mismo por correo electrónico es una buena manera para ser notificado de errores específicos.

Mensaje de error se envía por correo electrónico

En el siguiente ejemplo, si se produce un error específico, le enviaremos un e-mail con un mensaje de error y terminar la secuencia de comandos:

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

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

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

La salida del código anterior es el siguiente:

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

Los mensajes recibidos desde el código de seguridad es el siguiente:

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

Este método no es adecuado para todos los errores. de error debe ser convencional utilizando el sistema de registro de PHP por defecto para el registro en el servidor.

PHP tratamiento de errores
10/30