Latest web development tutorials
×

PHP corso

PHP corso PHP breve introduzione PHP installare PHP grammatica PHP variabile PHP echo/print PHP Tipi di dati PHP costante PHP stringa PHP operatori PHP If...Else PHP Switch PHP schieramento PHP Ordinamento di un array PHP superglobals PHP While circolazione PHP For circolazione PHP funzione PHP Variabili magici PHP Namespace PHP Object-Oriented

PHP modulo

PHP modulo PHP Forms Authentication PHP modulo - I campi obbligatori PHP modulo - e-mail di verifica e l'URL PHP esempio forma completa PHP $_GET variabile PHP $_POST variabile

PHP Tutorial avanzato

PHP array multidimensionali PHP data PHP contenere PHP file PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sicurezza E-mail PHP Error PHP Exception PHP filtro PHP Filtro avanzato PHP JSON

PHP 7 nuove funzionalità

PHP 7 nuove funzionalità

PHP Database

PHP MySQL breve introduzione PHP MySQL collegamento PHP MySQL Creazione di un database PHP MySQL Creare una tabella di dati PHP MySQL inserire i dati PHP MySQL Inserire più dati PHP MySQL prepared statement PHP MySQL leggere i dati 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 introduzione AJAX PHP AJAX Database AJAX XML AJAX ricerca in tempo reale AJAX RSS Reader AJAX voto

PHP Manuale di riferimento

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 Elaborazione immagini PHP RESTful

PHP Gestione degli errori

In PHP, la gestione degli errori di default è molto semplice. Un messaggio di errore viene inviato al browser, il messaggio con il nome del file, il numero di riga e una descrizione del messaggio di errore.


PHP Gestione degli errori

Durante la creazione di script e applicazioni Web, la gestione degli errori è una parte importante. Se il codice di errore manca codice di controllo, il programma può sembrare molto poco professionale, ma apre anche la porta a rischi per la sicurezza.

Questo tutorial introduce alcune del metodo di rilevazione degli errori più importante in PHP.

Spiegheremo i tuoi diversi metodi di gestione degli errori:

  • Semplice "die ()" dichiarazione
  • errori personalizzati e trigger di errore
  • Segnalazione errori

Base Gestione degli errori: Utilizzando la funzione di stampo ()

Il primo esempio mostra un semplice script che apre un file di testo:

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

Se il file non esiste, si otterrà un errore come questo:

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

Per impedire agli utenti di ottenere un messaggio di errore simile al precedente, abbiamo esaminato il file prima di accedere al file esiste:

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

Ora, se il file non esiste, si ottiene questo messaggio di errore simile a:

文件不存在

Rispetto al codice precedente, il codice precedente è più efficiente, in quanto utilizza un semplice meccanismo di gestione degli errori per terminare lo script dopo l'errore.

Tuttavia, è sufficiente terminare lo script non è sempre la strada giusta. Vediamo funzioni PHP alternative per la gestione degli errori.


La creazione di un gestore di errore personalizzato

Creare un gestore di errore personalizzato è abbastanza semplice. Creiamo semplicemente una funzione speciale che può essere chiamato quando si verifica un errore in PHP.

Questa funzione deve essere in grado di gestire almeno due parametri (livello di errore e messaggio di errore), ma può accettare fino a cinque parametri (opzionalmente: file, numero di riga e di contesto errori):

grammatica

error_function(error_level,error_message,
error_file,error_line,error_context)
parametri descrizione
error_level Richiesto. Errore è definito come un livello di segnalazione degli errori definito dall'utente. Deve essere un numero. Vedere la seguente tabella: livello di segnalazione degli errori.
error_message Richiesto. messaggio di errore di errore definito dall'utente dichiarato.
ERROR_FILE Opzionale. si è verificato il nome del file di errore specificato.
ERROR_LINE Opzionale. Predeterminato numero di riga è verificato l'errore.
error_context Opzionale. Specifica un array contenente tutte le variabili quando si verifica un errore in uso e dei loro valori.

livello di segnalazione degli errori

Questi livelli di report di errore sono i diversi tipi di errori Errore Handler elaborazione di abitudine:

常量 描述
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 的一部分)

Ora, creiamo una funzione per gestire gli errori:

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

Il codice di cui sopra è una semplice funzione di gestione degli errori. Quando viene attivato, si otterrà il livello di errore ei messaggi di errore. E poi emette il livello di errore e il messaggio e termina lo script.

Ora, abbiamo creato una funzione di gestione degli errori, abbiamo bisogno di determinare quando attivare la funzione.


Impostazione gestore degli errori

gestore degli errori di default di PHP è un gestore degli errori incorporato. Abbiamo intenzione di trasformare la funzione di cui sopra l'errore di default la durata gestore dello script.

È possibile modificare il gestore degli errori in modo che si applicava solo a qualche errore, quindi lo script può essere diversi modi per gestire diversi errori. Tuttavia, in questo caso, intendiamo utilizzare per tutti Handler errori Errore nostra abitudine:

set_error_handler("customError");

Dal momento che vogliamo che la nostra funzione personalizzata per gestire tutti gli errori, set_error_handler () aveva bisogno di un solo parametro, è possibile aggiungere un secondo argomento per specificare un livello di errore.

Esempi

Cercando di grandezza d'uscita che non esiste, per testare il gestore di errore:

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

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

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

L'output del codice sopra è il seguente:

Error: [8] Undefined variable: test


Errore trigger

Nello script la posizione di input di dati dell'utente quando l'input dell'utente non viene attivato quando un errore è utile. In PHP, questo viene fatto dalla funzione trigger_error () per completare.

Esempi

In questo esempio, se la variabile "test" è maggiore di "1", si verifica un errore:

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

L'output del codice sopra è il seguente:

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

È possibile attivare un errore nello script ovunque, con l'aggiunta di un secondo parametro, è possibile specificare il livello di errore viene attivato.

Possibili tipi di errori:

  • E_USER_ERROR - Errore di run-time generati dagli utenti fatale. Errore irreversibile. l'esecuzione dello script viene interrotta.
  • E_USER_WARNING - avvertimento di run-time generati dagli utenti non-fatale. l'esecuzione di script non viene interrotta.
  • E_USER_NOTICE - default. avviso di run-time generati dagli utenti. Quando lo script ha trovato potrebbe verificarsi un errore, ma può verificarsi anche in normali script di funzionamento.

Esempi

In questo esempio, se la variabile "test" è maggiore di "1", si verifica E_USER_WARNING errore. Se questo accade E_USER_WARNING, useremo il nostro gestore degli errori personalizzato e terminare lo 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);
}
?>

L'output del codice sopra è il seguente:

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

Ora che abbiamo imparato come creare il proprio errore, e come innescare loro, diamo un'occhiata al log degli errori.


registro errori

In caso di inadempienza, a seconda della configurazione error_log si trova nel php.ini, PHP invia un sistema di registrazione di errore per registrare o file server. Usando il error_log () funzione è possibile inviare i registri degli errori in un file specificato o una destinazione remota.

Si invia un messaggio di errore a se stessi tramite e-mail è un buon modo per ricevere la notifica di errori specifici.

Messaggio di errore viene inviato via e-mail

Nel seguente esempio, se si verifica un errore specifico, vi invieremo una e-mail con un messaggio di errore e terminare lo 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);
}
?>

L'output del codice sopra è il seguente:

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

I messaggi ricevuti dal codice precedente è il seguente:

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

Questo metodo non è adatto per tutti gli errori. error convenzionale dovrebbe essere utilizzando il sistema di registrazione PHP predefinito per la registrazione sul server.