Latest web development tutorials
×

PHP Kurs

PHP Kurs PHP Kurze Einführung PHP installieren PHP Grammatik PHP Variable PHP echo/print PHP Datentypen PHP Konstante PHP Schnur PHP Die Betreiber PHP If...Else PHP Switch PHP Feld PHP Sortieren eines Array PHP Superglobals PHP While Verkehr PHP For Verkehr PHP Funktion PHP Magische Variablen PHP Namespaces PHP Objektorientiert

PHP Form

PHP Form PHP Formularauthentifizierung PHP Form - Erforderliche Felder PHP Form - Überprüfung E-Mail und URL PHP Komplette Formularinstanz PHP $_GET Variable PHP $_POST Variable

PHP Erweiterte Tutorial

PHP Mehrdimensionale Arrays PHP Datum PHP enthalten PHP Datei PHP Datei-Upload PHP Cookie PHP Session PHP E-mail PHP Sicherheit E-mail PHP Error PHP Exception PHP Filter PHP Erweiterte Filter PHP JSON

PHP 7 Neue Funktionen

PHP 7 Neue Funktionen

PHP Datenbank

PHP MySQL Kurze Einführung PHP MySQL Verbindung PHP MySQL Erstellen einer Datenbank PHP MySQL Erstellen Sie eine Datentabelle PHP MySQL einfügen von Daten PHP MySQL Legen Sie mehrere Daten PHP MySQL Prepared Statements PHP MySQL Lesen Sie Daten 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 Kurze Einführung AJAX PHP AJAX Datenbank AJAX XML AJAX Echtzeitsuche AJAX RSS Reader AJAX Abstimmung

PHP Referenzhandbuch

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 Bildverarbeitung PHP RESTful

PHP-Fehlerbehandlung

In PHP ist die Standard-Fehlerbehandlung sehr einfach. Eine Fehlermeldung wird an den Browser, die Nachricht mit dem Dateinamen, die Zeilennummer und eine Beschreibung der Fehlermeldung gesendet.


PHP-Fehlerbehandlung

Wenn Skripte und Web-Anwendungen zu erstellen, die Fehlerbehandlung ist ein wichtiger Bestandteil. Wenn Ihr Code Fehlerprüfung Code fehlt, kann Ihr Programm sehen sehr unprofessionell, sondern öffnet auch die Tür zu Sicherheitsrisiken.

Dieses Tutorial stellt einige der wichtigsten in PHP Fehlererkennungsverfahren.

Wir werden Ihre verschiedenen Fehlerbehandlung Methoden erklären:

  • Simple "die ()" Erklärung
  • Individuelle Fehler und Fehler-Trigger
  • Fehlerberichterstattung

Grundfehlerbehandlung: Mit der Funktion die ()

Das erste Beispiel zeigt ein einfaches Skript, das eine Textdatei öffnet sich:

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

Wenn die Datei nicht existiert, wird ein Fehler wie diese:

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

Damit Benutzer bekommen eine Fehlermeldung ähnlich der oben untersuchten wir die Datei vor dem Zugriff auf die Datei vorhanden ist:

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

Nun, wenn die Datei nicht existiert, werden Sie diese Fehlermeldung ähnelt:

文件不存在

Im Vergleich zum vorherigen Code ist der Code über effizienter, da es eine einfache Fehlerbehandlung Mechanismus verwendet das Skript nach dem Fehler zu beenden.

Allerdings kündigen einfach das Skript nicht immer der richtige Weg ist. Lassen Sie uns für den Umgang mit Fehlern bei alternativen PHP-Funktionen zu suchen.


Erstellen eines Fehler Benutzerdefinierte Handler

Erstellen Sie einen Handler benutzerdefinierten Fehler ist ganz einfach. Wir erstellen Sie einfach eine spezielle Funktion, die aufgerufen werden kann, wenn ein Fehler in PHP auftritt.

Diese Funktion muss mindestens zwei Parameter Handling (Fehlerebene und Fehlermeldung) in der Lage sein, kann aber bis zu fünf Parameter akzeptieren bis (optional: Datei, Zeilennummer und Fehlerkontext):

Grammatik

error_function(error_level,error_message,
error_file,error_line,error_context)
Parameter Beschreibung
error_level Erforderlich. Fehler wird als benutzerdefinierte Fehlerberichterstattung Ebene definiert. Es muss eine Zahl sein. Siehe folgende Tabelle: Fehlerberichtsebene.
error_message Erforderlich. Benutzerdefinierte Fehlerfehlermeldung angegeben.
error_file Optional. Dateiname angegeben Fehler aufgetreten ist.
ERROR_LINE Optional. Vorgegebene Zeilennummer der Fehler aufgetreten ist.
error_context Optional. jede Variable Gibt ein Array mit, wenn ein Fehler in der Anwendung und ihre Werte auftritt.

Fehlerberichtsebene

Diese Fehlerberichtsebenen sind die verschiedenen Arten von Fehlern Handler benutzerdefinierte Verarbeitung Fehler:

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

Lassen Sie uns nun eine Funktion erstellen, Fehler zu behandeln:

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

Der obige Code ist eine einfache Fehlerbehandlung Funktion. Wenn es ausgelöst wird, wird die Fehlerstufe und Fehlermeldungen. Es gibt dann die Fehlerstufe und die Nachricht und beendet das Skript.

Jetzt haben wir eine Fehlerbehandlung Funktion erstellt haben, müssen wir zu bestimmen, wann die Funktion auszulösen.


Einstellen Fehlerbehandlung

PHP-Standardfehlerhandler ist eine integrierte Fehlerhandler. Wir werden die Funktion über dem Standardfehlerbehandlungsdauer des Skripts zu transformieren.

Sie können die Fehlerbehandlungsroutine zu ändern, so dass sie nur bis zu einem gewissen Fehler angewendet, so kann das Skript verschiedene Möglichkeiten, um verschiedene Fehler behandeln. Doch in diesem Fall wollen wir für alle Fehler Error Handler unsere eigene zu verwenden:

set_error_handler("customError");

Da wir unsere eigene Funktion, um alle Fehler zu behandeln wollen, set_error_handler () nur einen Parameter benötigt, können Sie ein zweites Argument hinzufügen, um eine Fehlerstufe angeben.

Beispiele

Durch die Ausgangsgröße versucht, die nicht existiert, die Fehlerbehandlung zu testen:

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

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

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

Die Ausgabe des Codes ist oben, wie folgt:

Error: [8] Undefined variable: test


Trigger-Fehler

Im Skript der Benutzer eingegebenen Ortsdaten, wenn die Benutzereingabe nicht ausgelöst wird, wenn ein Fehler nützlich ist. In PHP, dies wird durch die trigger_error () -Funktion erfolgen abzuschließen.

Beispiele

In diesem Beispiel, wenn die "Test" Variable größer als "1" ist, tritt ein Fehler auf:

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

Die Ausgabe des Codes ist oben, wie folgt:

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

Sie können einen Fehler im Script an beliebiger Stelle auslösen, durch einen zweiten Parameter hinzufügen, können Sie die Fehlerstufe angeben ausgelöst wird.

Mögliche Arten von Fehlern:

  • E_USER_ERROR - Fatal Laufzeitfehler vom Benutzer generiert. Nicht behebbarer Fehler. Skriptausführung wird unterbrochen.
  • E_USER_WARNING - Nicht fatal nutzergenerierten Laufzeitwarnung. Skriptausführung wird nicht unterbrochen.
  • E_USER_NOTICE - default. Nutzergenerierte Laufzeit kündigen. Wenn das Skript zu finden kann ein Fehler auftreten, kann aber auch im normalen Betrieb Skript auftreten.

Beispiele

In diesem Beispiel, wenn die "Test" Variable größer als "1" ist, tritt E_USER_WARNING Fehler. Wenn dies E_USER_WARNING geschieht, werden wir unsere eigene Fehlerbehandlung verwenden und das Skript zu beenden:

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

Die Ausgabe des Codes ist oben, wie folgt:

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

Nun, da wir gelernt, wie Sie Ihre eigenen Fehler zu erstellen, und wie man sie auslösen, lassen Sie uns auf das Fehlerprotokoll zu suchen.


Fehlerprotokoll

Im Falle des Verzuges nach der error_log-Konfiguration in der php.ini gesetzt ist, sendet PHP einen Fehler Aufzeichnungssystem zur Aufzeichnung oder Dateiserver. Durch die Verwendung der error_log () Funktion, die Sie Fehlerprotokolle in eine bestimmte Datei oder einem Remote-Ziel senden kann.

Es sendet eine Fehlermeldung an, sich per E-Mail ist eine gute Möglichkeit benachrichtigt bestimmte Fehler zu bekommen.

Fehlermeldung wird per E-Mail gesendet

Im folgenden Beispiel, wenn ein bestimmter Fehler auftritt, werden wir eine E-Mail mit einer Fehlermeldung und beenden Sie das Skript senden:

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

Die Ausgabe des Codes ist oben, wie folgt:

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

Nachrichten aus dem obigen Code empfangen wird, wie folgt:

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

Diese Methode ist für alle Fehler nicht geeignet. Herkömmliche Fehler sollte für die Aufzeichnung auf dem Server unter Verwendung des Standard-PHP-Logging-System sein.