Detaillierte Erklärung der globalen Fehlerbehandlung in PHP
PHP verfügt über ein eigenes try{throw{}}catch{}-Ausnahme-/Fehlerabfangsystem, das in einer Produktionsumgebung schwer zu verwenden ist. In einer Produktionsumgebung verlangen wir im Allgemeinen, dass PHP sofort reagiert, sobald eine Ausnahme/ein Fehler auftritt beendet das Skript und zeigt es dem Besucher an. Der Server gibt eine Fehlermeldung aus und sendet eine Nachricht an den Administrator über benutzerdefinierte Funktion
Zweck dieses Artikels
Global of PHP Error Handling ist bei der Entwicklung von Projekten sehr nützlich. Es kann Entwicklern helfen, einige Probleme schnell zu lokalisieren und die Arbeitseffizienz zu verbessern. Standardmäßig werden globale Fehler direkt ausgegeben, aber eine kürzlich während der Entwicklung verwendete Framework-Bibliothek hat eine globale Fehlerbehandlung festgelegt, was dazu führt, dass viele Fehlermeldungen nicht ausgegeben werden und es zeitaufwändig ist, Probleme zu lokalisieren. Deshalb habe ich die Implementierung dieser Bibliothek untersucht und festgestellt, dass sie error_reporting und set_error_handler setzt, was dieses Phänomen verursacht. Notieren Sie nun die Verwendung dieser beiden Funktionen als Memo.
Hintergrund
PHP verfügt nicht über eine Typerkennung. Es ist für Entwickler einfacher, falsche Wörter einzugeben, was zu schwerwiegenden Fehlern und schließlich dazu führt, dass das Skript nicht mehr ausgeführt wird. Wenn Sie zu diesem Zeitpunkt keine Fehlermeldung erhalten, wird es sehr schmerzhaft sein. Sie müssen mit dem Debuggen ab der ersten Codezeile im Skript beginnen und Tausende von Codezeilen weiter ausdrucken oder wiederholen, bis Sie das falsch geschriebene Wort gefunden haben. Dann müssen Sie zurückgehen und alle zuvor hinzugefügten Abdrücke oder Echos löschen. Das ist ein extrem langweiliger Job.
Allgemeine Situation
Unter normalen Umständen gibt PHP den schwerwiegenden Fehler direkt aus und gibt die Fehlerquelle (Dateiadresse, Zeilennummer) und den Grund usw. aus ., sodass Entwickler Probleme leicht lokalisieren können.
Aber manchmal werden diese Informationen aufgrund von php.ini-Einstellungen oder Problemen mit der Framework-Konfiguration von Drittanbietern nicht ausgegeben. Zu diesem Zeitpunkt müssen Sie lernen, relevante Parameter selbst festzulegen und diese Fehlermeldungen schnell zu finden Probleme.
error_reporting
error_reporting ist ein globaler PHP-Konfigurationsparameter in php.ini. Dient zum Konfigurieren der Fehlerausgabestufe. Die Parameter sind Bits, mit denen die Fehlerausgabestufe festgelegt werden kann. Die folgenden Informationen werden aus php.ini kopiert:
; error_reporting is a bit-field. Or each number up to get desired error ; reporting level ; E_ALL - All errors and warnings (doesn't include E_STRICT) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it's automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; ; Examples: ; ; - Show all errors, except for notices and coding standards warnings ; ;error_reporting = E_ALL & ~E_NOTICE ; ; - Show all errors, except for notices ; ;error_reporting = E_ALL & ~E_NOTICE | E_STRICT ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors except for notices and coding standards warnings ; error_reporting = E_ALL & ~E_NOTICE
Standardmäßig gibt PHP alle Fehlermeldungen außer Hinweisen aus. Ebenso stellt die PHP-Standardfunktion die gleichnamige Funktion error_reporting(int $level) bereit, die zur Ausführung derselben Funktion in PHP-Skripten verwendet wird. Dies hat keine Auswirkungen auf andere Programme. Es ist zu beachten, dass die Fehlerausgabe deaktiviert ist, wenn $level 0 ist, d. h. es werden keine Fehler ausgegeben.
set_error_handler
PHPs standardmäßige Fehlerbehandlung besteht darin, die Nachricht auszugeben. Manchmal müssen Sie jedoch andere Vorgänge definieren. In diesem Fall müssen Sie die Fehlerbehandlungsfunktion anpassen. PHP bietet die integrierte Funktion set_error_handler, die uns bei der Registrierung unserer eigenen Fehlerbehandlungsfunktionen hilft. Der Funktionsprototyp lautet wie folgt:
mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )
Es ist erwähnenswert, dass selbst wenn die Fehlerbehandlungsfunktion registriert ist, Das Standardverhalten ist weiterhin: Bei der Ausführung wird die Fehlermeldung weiterhin ausgegeben, wenn ein Fehler auftritt. Sie müssen daher die Fehlerstufe im Programm explizit auf 0 setzen und dann Ihre eigene Fehlerbehandlungsfunktion registrieren. Dieser Ansatz ist besonders in einer Produktionsumgebung wichtig, denn selbst wenn etwas schief geht, werden sensible interne Fehlerinformationen nicht potenziell böswilligen Benutzern zugänglich gemacht. Es ist auch wichtig darauf hinzuweisen, dass benutzerdefinierte Fehlerbehandlungsfunktionen keine schwerwiegenden Fehler (z. B. Kompilierungsfehler) behandeln können. Das Folgende ist ein Beispiel für die Verwendung einer benutzerdefinierten Fehlerbehandlungsfunktion:
<?php error_reporting (0); function error_handler ($error_level, $error_message, $file, $line) { $EXIT = FALSE; switch ($error_level) { case E_NOTICE: case E_USER_NOTICE: $error_type = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error_type = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error_type = 'Fatal Error'; $EXIT = TRUE; break; default: $error_type = 'Unknown'; $EXIT = TRUE; break; } printf ("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line); if ($EXIT) { die(); } } set_error_handler ('error_handler'); //new NonExist(); echo $novar; echo 3/0; trigger_error ('Trigger a fatal error', E_USER_ERROR); new NonExist(); ?>
Das Ausführen dieses Skripts kann die folgende Ausgabe erhalten:
Notice: Undefined variable: novar in /your/php_demo_file.php on line 40 Warning: pision by zero in /your/php_demo_file.php on line 41 Fatal Error: Trigger a fatal error in /your/php_demo_file.php on line 42
Wie Sie sehen können, ist die letzte „neue NoExistClass ()“-Ausnahme wurde von der benutzerdefinierten Fehlerbehandlungsfunktion nicht abgefangen.
Abschließend registriert set_Exception_handler die Ausnahmebehandlung der obersten Ebene. In Webanwendungen können Sie diese festlegen und dann einheitlich zur Fehlerbehandlungsseite springen.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der globalen Fehlerbehandlung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
