So lösen Sie das PHP 500-Fehlerproblem
Lösung für den PHP-500-Fehler: 1. Überprüfen Sie das PHP-Skript und ändern Sie es. 2. Erfassen Sie die Ausnahme und zeichnen Sie die Ausnahme im Protokoll auf. 3. Analysieren Sie das Protokoll und verarbeiten Sie es.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, Dell G3-Computer.
Wie löse ich das PHP-500-Fehlerproblem?
PHP- und 500-Fehler
Während des PHP-Entwicklungsprozesses werden häufig 500-Fehler zurückgegeben und es gibt keinen Debugging-Inhalt (verfügbar) im Hauptteil. Zu diesem Zeitpunkt müssen Sie langsam debuggen (Punkte unterbrechen, Debug-Modus aktivieren usw.). Wenn es sich jedoch um ein Live-Netzwerk handelt, ist dieser Fehler frustrierender. Es ist weder einfach, Punkte zu unterbrechen noch den Debug-Modus zu aktivieren. Aber da es sich um einen Fehler handelt, gibt es immer eine Lösung. Lassen Sie uns die Ursachen und Lösungen von 500 Schritt für Schritt analysieren.
0x01, 500 Fehler
500 Fehler, auch Internal Server Error (interner Dienstfehler) genannt, bedeutet, dass der Dienst die Anfrage aufgrund eines unbekannten Fehlers nicht verarbeiten kann. In PHP-Sites wird es im Allgemeinen von PHP zurückgegeben. Mit anderen Worten, 500-Fehler sind im Allgemeinen Fehler in PHP-Skripten.
php-fpm-Erfassungspaket 500
Wie Sie auf dem obigen Bild (Nginx+PHP-FPM-Architektur) sehen können, gibt das Skript einen Fehler aus, wenn PHP eine nicht vorhandene Klasse aufruft und 500 an Nginx zurückgibt (und wird). Die Fehlermeldung wird ebenfalls zurückgegeben, aber in STDERR entladen.
0x02, welche Fehlerausnahmen verursachen 500
Welche Fehler verursachen also 500-Fehler? Alle Fehlerstufen von PHP finden Sie in der offiziellen Dokumentation von PHP (http://php.net/manual/zh/errorfunc .constants.php) und die Fehlerstufen E_ERROR, E_PARSE, E_RECOVERABLE_ERROR, E_USER_ERROR und nicht abgefangene Ausnahmen verursachen alle 500 Fehler. Fehler auf E_ERROR-Ebene, verursacht durch 500 Ausnahme im PHP-Skript, wird es definitiv 500 verursachen? Offensichtlich nicht, selbst wenn das Skript einen schwerwiegenden Fehler aufweist, kann es dennoch 200 zurückgeben.
Konfigurationsoption „display_errors“
In Webanwendungen, die auf Python, NodeJS usw. basieren, wird standardmäßig eine Ausnahmemeldung auf der Konsole ausgegeben (STDERR/STDOUT). In PHP, das auf der PHP-FPM-Architektur basiert, gibt es keine Konsole zum Drucken, und stderr und stdout sind in FastCGI auf die entsprechenden STRDERR und STDOUT gesetzt. Wenn der Fehler an STDOUT umgeleitet wird, wird der Fehler direkt in der Antwort ausgegeben und der Statuscode wird auf 200 gesetzt. Dies ist auch die Fähigkeit, die durch die Option display_errors erreicht wird. Die Konfiguration der display_errors-Option muss über ini_set implementiert werden. Die Konfiguration von display_errors im PHP-Dokument gibt an, dass der Wert ein String-Typ ist. Bei der tatsächlichen Verwendung können Zahlen und boolesche Typen diese Konfiguration auch aktivieren oder deaktivieren.
error_reporting-Konfiguration
display_errors steuert, ob Fehlerdetails angezeigt werden und ob Fehlerstatuscodes zurückgegeben werden, wenn ein Fehler im PHP-Skript auftritt, während das Element error_reporting verwendet wird, um zu steuern, welche Fehlerstufe direkt gedruckt werden kann.
Die Einstellungselemente von error_reporting können über error_reporting(E_ALL) oder ini_set('error_reporting', E_ALL) konfiguriert werden. Einzelheiten zu den Funktionsparametern finden Sie in der PHP-Dokumentation.
Es ist zu beachten, dass PHP selbst über Fehlerprotokolle verfügt (zwei Konfigurationselemente, error_log und log_errors). Wenn ein Fehler auftritt, wird PHP den Fehler in das Fehlerprotokoll schreiben. Welche Fehler geschrieben werden müssen, wird durch das Element „error_reporting“ beeinflusst. der Kontrolle. Wenn die Fehlerstufe nicht übereinstimmt, werden keine Fehlerdetails angezeigt Alles, was Sie zu diesem Zeitpunkt tun können, ist die Erfassung von Ausnahmen, die erkannt und im Protokoll aufgezeichnet werden, um zukünftiges Debuggen und die Behandlung von Live-Netzwerkfehlern zu erleichtern.
PHP selbst verfügt bereits über Fehlerprotokolleinträge. Sie können das Element „log_errors“ in php.ini auf „Ein“ setzen und mit dem Konfigurationselement „error_log“ zusammenarbeiten, um den Speicherpfad des Fehlerprotokolls anzugeben .
Fehlerprotokollierungsschalter
Protokollpfadeinstellung
Das Schreiben dieses Fehlerprotokolls wird nicht durch die Konfiguration von display_errors gesteuert. Das heißt, unabhängig davon, ob display_errors aktiviert ist oder nicht, werden Fehler im Protokoll aufgezeichnet. Dies wird jedoch durch die error_reporting-Konfiguration gesteuert. Wenn die aktuelle Fehlerstufe nicht mit der Fehlerstufe in error_reporting übereinstimmt, wird der Fehler nicht in das Protokoll geschrieben. Das heißt, wenn die Fehlerstufe E_ERROR ist, die Einstellung jedoch error_reporting(E_NOTICE) ist, wird die Fehlermeldung E_ERROR nicht im Protokoll angezeigt.
Das PHP-Fehlerprotokoll zeichnet verschiedene Arten von Fehlern auf.
Das Protokoll wird aufgrund einer Nichtübereinstimmung der Fehlerebene nicht geschrieben Handhabungsfunktion. Die Fehleraufzeichnung kann erreicht werden, indem die erfassten Fehlerinformationen über eine Funktion in das angegebene Protokoll geschrieben werden. Einzelheiten zur Verwendung der
-Funktion finden Sie unter http://km.oa.com/group/19368/articles/show/302491. Hier ist eine Vorlage:
$previousHandler = set_exception_handler(function(Exception $ex) use (&$previousHandler) { call_user_func('exceptionHandler', $ex, $previousHandler); }); set_error_handler('errorHandler'); register_shutdown_function('fatalErrorHandler'); function exceptionHandler(Exception $ex, $previousHandler) { $info = array( $ex->getFile(), $ex->getLine(), $ex->getCode(), $ex->getMessage() ); // 记录日志 logPHPError($info); if (isset($previousHandler) && is_callable($previousHandler)) { call_user_func($previousHandler, $ex); } } /** * 框架错误处理函数 * @param $errno * @param $errstr * @param $errfile * @param $errline * @return bool */ function errorHandler($errno = 0, $errstr = '', $errfile = '', $errline = 0) { switch ($errno) { case E_WARNING: $errname = 'E_WARNING'; break; case E_NOTICE: $errname = 'E_NOTICE'; break; case E_STRICT: $errname = 'E_STRICT'; break; case E_RECOVERABLE_ERROR: $errname = 'E_RECOVERABLE_ERROR'; break; case E_DEPRECATED: $errname = 'E_DEPRECATED'; break; case E_USER_ERROR: $errname = 'E_USER_ERROR'; break; case E_USER_WARNING: $errname = 'E_USER_WARNING'; break; case E_USER_NOTICE: $errname = 'E_USER_NOTICE'; break; case E_USER_DEPRECATED: $errname = 'E_USER_DEPRECATED'; break; default: restore_error_handler(); return false; } // 记录日志 $info = array( $errfile, $errline, $errname, $errstr ); logPHPError($info); restore_error_handler(); return false; } /** * Fatal error错误处理 */ function fatalErrorHandler() { if (($e = error_get_last()) && $e['type'] === E_ERROR) { $info = array( $e['file'], $e['line'], 'E_ERROR', $e['message'] ); // 记录日志 logPHPError($info); } }
Zur Zusammenfassung up, error_reporting wird verwendet, um Funktionen oder Konfigurationen zu steuern, die Fehlerinformationsebenen an den Browser oder das PHP-Fehlerprotokoll ausgeben, und display_errors steuert, ob Fehler- und Warninformationen an den Browser ausgegeben werden. Da das Fehlerprotokoll von PHP global ist und von error_reporting gesteuert wird, wird empfohlen, eine eigene Fehler-(Ausnahme-)Erfassungs- und Aufzeichnungslogik in Ihrem Unternehmen zu implementieren.
Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP 500-Fehlerproblem. 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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.

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

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

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt
