Wenn Sie bereits darauf geklickt haben SMTP-Post → Einstellungen und WordPress Sie werden mit einem antworten leerer Bildschirm oder fataler FehlerSie haben es mit einem typischen Fall eines Fehlers zu tun, der nur in der... ausgelöst wird.Admin, wenn die Einstellungsseite geladen wird.

das Problem

Das Hauptsymptom: Beim Öffnen der Seite mit den Post-SMTP-Einstellungen tritt ein schwerwiegender PHP-Fehler auf. Häufig bleibt die Website für Besucher erreichbar, die Administrationsoberfläche stürzt jedoch auf dieser Seite ab.

Hier sind einige realistische Fehlermeldungen, die ich in den Protokollen von WordPress 6.9.x-Websites gesehen habe (der genaue Wortlaut variiert je nach Hosting-Anbieter und Debug-Modus):

Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of type array, string given
in /wp-content/plugins/post-smtp/Postman/PostmanViewController.php:1234
Stack trace:
#0 ...
Fatal error: Uncaught Error: Call to undefined function wp_get_environment_type()
in /wp-content/plugins/post-smtp/Postman/Postman.php:210
Fatal error: Uncaught Error: Class "VendorPackageSomeClass" not found
in /wp-content/plugins/post-smtp/vendor/.../autoload.php:...
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
in /wp-content/plugins/post-smtp/.../Settings.php on line ...

Wo es erscheint:

  • Administrator insbesondere auf /wp-admin/admin.php?page=postman (oder eine Variante davon).
  • AJAX Manchmal, während des Ladens eines Tabs, wenn die Einstellungsseite aufgerufen wird Admin-ajax.php.
  • REST API Weniger verbreitet, aber einige moderne Plugins laden Daten über /wp-json/.

Typische Umstände:

  • nur nach einem Update von Post SMTP oder von WordPress (hier WordPress 6.9.4).
  • Nach einer Änderung PHP-Version (Übergang zu 8.1/8.2/8.3), wodurch „stille“ Fehler strenger gehandhabt werden (TypeError).
  • Nach der Aktivierung eines Sicherheits-/Cache-Plugins, das die Administrationsoberfläche modifiziert (Minifizierung, REST/AJAX-Blockierung, WAF-Regeln).

Für wen es geeignet ist: Wenn Sie ein Blog-Anfänger sind, lernen Sie, Die wahre Spur abrufen, den Konflikt isolierenWenden Sie anschließend eine sichere Lösung an (ohne den WordPress-Kern zu verändern). Am Ende wissen Sie auch, welche Informationen Sie dem Support bereitstellen müssen (saubere Protokolle, durchgeführte Schritte, Versionen).

Kurze Zusammenfassung

  • Aktivieren Sie einen sauberen Diagnosemodus: WP_DEBUG + Protokollund die genaue Spur von der Fehler.
  • Testen Sie die Einstellungsseite mit Gesundheitscheck (Fehlerbehebungsmodus) zur Bestätigung eines Plugin-/Theme-Konflikt.
  • Viele Unfälle haben ihren Ursprung inBeschädigte Post-SMTP-Optionen Nach dem Update: Gezielter Reset über WP-CLI oder die Basisversion.
  • Fehler vom Typ "Klasse nicht gefunden" deuten oft auf einen Fehler hin. Anbieter/Autoload Unvollständig: Installieren Sie das Plugin (sauber) neu, anstatt einen Blindpatch anzuwenden.
  • Fehler aufgrund von Speichermangel werden serverseitig behoben (PHP-Limit) + Reduzierung der Administratorlast (Cache/Minify falsch konfiguriert).

Symptome

Je nach Server wird Ihnen möglicherweise Folgendes angezeigt:

  • Fehler 500 durch Öffnen von Post SMTP → Einstellungen.
  • weißer Bildschirm (WSOD) nur auf dieser Admin-Seite.
  • Nachricht "Auf dieser Webseite ist ein schwerwiegender Fehler aufgetreten." + WordPress-E-Mail mit einem Trace-Auszug.
  • Post-SMTP-Tabs/Abschnitte, die nicht geladen werden, mit Fehlermeldungen in der Konsole (AJAX/REST blockiert).
  • Einstellungen konnten nicht gespeichert werden (ungültige Eingabe, fehlende Berechtigungen oder schwerwiegender Fehler beim Absenden).

Anzeichen, die auf eine bestimmte Ursache hinweisen:

  • Das Frontend funktioniert, aber die Admin-Oberfläche stürzt ab: oft ein Hook-Admin Missbrauch oder Konflikt mit einem „Admin Optimizer“-Plugin.
  • Lokal funktioniert es, aber nicht in der Produktion: oft PHP-Version, das Erinnerungsvermögenoder WAF (Anwendungsfirewall).
  • Es funktionierte nicht mehr „direkt nach dem Update“: inkompatible Optionen, Autoloader-Anbieter, OPcache-Cache.

Schnelldiagnosetabelle

Symptom Mögliche Ursache Überprüfung Lösung
Schwerwiegender Fehler „array_merge()… Zeichenkette angegeben“ Die SMTP-Option wird als Array erwartet, wurde aber als Zeichenkette gespeichert. Den Ablauf beobachten + die Option in der Datenbank prüfen. Lösung 3 (Option zurücksetzen/umwandeln)
„Klasse nicht gefunden … vendor/autoload.php“ Plugin falsch installiert / Anbieter unvollständig Vergleichen Sie den Plugin-Ordner und laden Sie ihn anschließend erneut von wordpress.org herunter. Installieren Sie das Plugin neu (und leeren Sie den OPcache).
Fehler 500 ohne Details Protokollierung deaktiviert / WAF / Cache WP_DEBUG_LOG + Serverprotokolle aktivieren Lösung 1 + Cache deaktivieren/Admin-Minifizierung deaktivieren
Leere Einstellungsseite, JS-Konsolenfehler JS (Minifizierung) oder REST/AJAX-Konflikt blockiert Browserkonsole + Netzwerk-Tab Admin-Minifizierung deaktivieren, /wp-json/ zulassen
„Der verfügbare Speicherplatz ist erschöpft.“ Unzureichender PHP-Speicher für den Administrator Fehlerprotokoll + Website-Zustand Speicherlimit (Server) erhöhen + ressourcenintensive Plugins einschränken

Warum passiert das

Vereinfacht gesagt: Beim Öffnen einer Einstellungsseite lädt WordPress das Plugin, dessen PHP-Dateien und Skripte und führt anschließend den Code aus, um das Formular anzuzeigen. Sollte auch nur ein einziger Codeabschnitt auf unerwartete Daten stoßen (z. B. eine Option im falschen Format), stoppt PHP die gesamte Ausführung mit einer Fehlermeldung. fataler Fehler.

Hier ist, was hinter den Kulissen passiert (eine etwas technischere Version):

  • WordPress lädt die Plugins und löst dann Folgendes aus: HakenEin Hook ist ein „Anknüpfungspunkt“, an dem ein Plugin Code ausführen kann. Es gibt Aktionen (ausführen) und filtres (einen Wert ändern).
  • Die Einstellungsseite wird durchlaufen admin_menu (Hinzufügen des Menüs) und anschließendes Laden des Bildschirms (oft) last- $ hook_suffixdann die Anzeige.
  • SMTP-Anfragen lesen Optionen (gespeichert in der Datenbank über get_option()Wenn der Typ nicht dem erwarteten entspricht (String statt Array), löst PHP 8.1+ strengere TypeErrors aus.

Ursachen, geordnet von der häufigsten zur seltensten (auf WordPress 6.9.4 / PHP 8.1+):

  1. Beschädigte oder veraltete SMTP-Post-Option aus einer älteren Version (unvollständige Migration).
  2. Plugin-Konflikt (Cache/Minifizierung/Admin-Optimierung/Sicherheit), was AJAX/REST beeinträchtigt oder die Ladefolge ändert.
  3. Unvollständige Installation Plugin (fehlender Vendor-Ordner, Dateien nach dem Update abgeschnitten).
  4. Nicht unterstützte PHP-Version (zu alt) oder im Gegenteil ein strengeres Verhalten (TypeError), das einen latenten Fehler offenbart.
  5. Speichergrenze zu niedrig im Adminbereich, insbesondere bei großen Websites (WooCommerce, Website-Baukästen usw.).

Kompatibilität mit Page-Buildern: Divi 5, Elementor und Avada haben im Allgemeinen nichts mit der Einstellungsseite eines Plugins zu tun. Meiner Erfahrung nach tragen sie jedoch indirekt durch Add-ons zur „Admin-Optimierung“ oder global eingebundene Skripte dazu bei. Daher testen wir zusätzlich mit einem Standard-Theme mithilfe des Health Checks.

Voraussetzungen vor Beginn

  • Sauvegarde Vollständig (Dateien + Datenbank). Führen Sie diese Operationen nicht ohne Sicherheitsvorkehrungen direkt in der Produktionsumgebung durch.
  • Zugang zu:
    • FTP/SFTP oder Dateimanager
    • die Datei wp-config.php
    • Idealerweise verwenden Sie WP-CLI (optional, aber sehr praktisch).
  • Empfohlene Versionen: WordPress 6.9.4 et PHP 8.1 +(Wenn Sie PHP 7.4/8.0 verwenden, sollten Sie zunächst migrieren: Viele moderne Tools testen diese Versionen nicht mehr.)
  • Nützliche Werkzeuge:

Hauptrisiko Das kann passieren, wenn man die falsche Datei bearbeitet (z. B. ein Plugin direkt ändert) und die Änderungen beim nächsten Update verloren gehen. Verwenden Sie für Code-Snippets eine Mu-Plugin (ein „unbedingt zu verwendendes“ Plugin) oder ein benutzerdefiniertes Plugin.


Lösung 1: Den schwerwiegenden Fehler isolieren und die Ablaufverfolgung ermitteln (WP_DEBUG, Protokolle, Abfragemonitor)

Wenn mir jemand sagt: „Post SMTP Settings verursacht einen schwerwiegenden Fehler“, beginne ich immer mit dem Gleichen: dem Abrufen der Informationen. die genaue SpurOhne diese Einstellung werden Plugins willkürlich deaktiviert.

Schritt 1 – Aktivieren Sie die saubere PHP-Protokollierung (ohne Anzeige von Fehlern für Besucher).

geöffnet wp-config.php (im WordPress-Stammverzeichnis) und fügen Sie diese Konstanten hinzu/passen Sie sie an. Platzieren Sie sie avant die Zeile „Das ist alles, hör auf zu bearbeiten!“

VOR dem Code (häufig bei Anfängern: Debugging ist nicht vorhanden oder wird nicht auf dem Bildschirm angezeigt):

<?php
// ... contenu existant ...

define('WP_DEBUG', false);

// ...

AFTER-Code (empfohlen für die Diagnose in der Produktion ohne Datenverlust):

<?php
// ... contenu existant ...

/**
 * Diagnostic : active les logs sans afficher d’erreurs aux visiteurs.
 * Pensez à désactiver après dépannage.
 */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

// Évite que PHP affiche des erreurs malgré WP_DEBUG_DISPLAY à false.
@ini_set('display_errors', '0');

// ...

Warum das hilft: WordPress schreibt die Fehler an wp-content/debug.logDies ist die Datei, die Sie nach der Reproduktion des Absturzes lesen werden.

Offizielle Referenz: WordPress debuggen (developer.wordpress.org)

Schritt 2 – Reproduzieren Sie den Fehler und rufen Sie die Fehlerprotokolle ab.

  1. Öffnen Sie das Admin-Panel und klicken Sie auf Post SMTP → Einstellungen (oder den entsprechenden Eintrag).
  2. Bei weißem Bildschirm: Einmal neu laden (manchmal wird das Protokoll beim zweiten Aufruf geschrieben).
  3. geöffnet wp-content/debug.log und kopieren:
    • die Zeile „Schwerwiegender Fehler…“
    • die 10–30 Zeilen des Stack-Traces

Si debug.log füllt sich nicht:

  • Ihr Hosting-Anbieter hat möglicherweise den Schreibzugriff deaktiviert. Überprüfen Sie die Berechtigungen von wp-content.
  • Über das Panel können Sie die Serverprotokolle (Apache/Nginx) einsehen.
  • Wenn Sie einen aggressiven Server-Cache verwenden, leeren Sie ihn.

Schritt 3 – Konflikt bestätigen, ohne die öffentliche Website zu beeinträchtigen (Gesundheitscheck)

Installieren/aktivieren Gesundheitscheck, Dann :

  1. Tools → Site Health → Registerkarte Hilfe
  2. Aktivieren Sie den Fehlerbehebungsmodus (Ihre Besucher sind nicht betroffen).
  3. Test Post SMTP → Einstellungen.
  4. Wenn es im Fehlerbehebungsmodus funktioniert: Aktivieren Sie die Plugins in diesem Modus nacheinander wieder, bis der Fehler reproduziert wird.

Meiner Erfahrung nach sind die häufigsten Konflikte folgende:

  • Minifizierungs-Plugins, die die Administration beeinträchtigen
  • Sicherheits-Plugins, die blockieren admin-ajax.php ou /wp-json/
  • Snippet-Plugins, die fehlerhaften Code laden admin_init

Schritt 4 – Überprüfen Sie die Browserkonsole (falls die Seite nur teilweise geladen wird).

Wenn Sie die Post-SMTP-Oberfläche sehen, aber mit leeren Tabs:

  • Entwicklertools öffnen → Konsole: Nach JS-Fehlern suchen
  • Öffnen Sie DevTools → Netzwerk: Filter admin-ajax.php et /wp-json/

Wenn bei REST-Anfragen 403/401-Fehler auftreten, liegt dies häufig an einem Sicherheits-Plugin oder Serverregeln. Weitere Informationen finden Sie in der REST-API-Dokumentation. REST-API-Handbuch


Lösung 2: Reparieren einer Einstellungsseite, die aufgrund eines fehlerhaft geladenen Admin-Hooks nicht mehr funktioniert

Dies tritt auf, wenn der schwerwiegende Fehler nicht „direkt“ vom SMTP-Post, sondern von einem darauf laufenden Code-Snippet oder Plugin stammt. Erfahrungen Die Admin-Seiten… und das schlägt nur auf der Post-SMTP-Seite fehl (weil eine erwartete Variable auf diesem Bildschirm nicht existiert).

Typisch: ein „Admin-Anpassungscode“, der davon ausgeht, dass $_GET['page'] ist immer definiert oder ruft eine Funktion zu früh auf.

Schnelle Diagnose

  • in debug.logDie Spur weist in Richtung functions.php (Theme), ein Snippets-Plugin oder ein „Admin-Anpassungs“-Plugin.
  • Wenn Sie im Health Check (Fehlerbehebungsmodus) auf Twenty Twenty-Five (oder ein Standard-Theme) zurückwechseln und es dann funktioniert, liegt das Problem entweder an Ihrem Theme oder an einem Admin-Add-on.

Praxisbeispiel: ein übermäßig aggressiver admin_init-Hook (VORHER → NACHHER)

Begriff : Aktion = ein Hook, der eine Funktion ausführt. Hier admin_init Wird bei jedem Administratorstart ausgeführt.

Wo befindet sich dieser Code? oft in functions.php aus dem Theme (manchmal einem Child-Theme) oder in einem Snippets-Plugin. Nicht verändern Das übergeordnete Theme. Arbeiten Sie in einem untergeordneten Theme oder besser noch: in einem MU-Plugin.

VORHERIGER Code (fehlerhaft: geht davon aus, dass $_GET['page'] (existiert und manipuliert Optionen ohne Überprüfung):

<?php
add_action('admin_init', function () {
	// Mauvaise pratique : $_GET peut être absent, et la page peut ne pas correspondre.
	if ($_GET['page'] === 'postman') {
		// Exemple : on modifie une option sans vérifier son type.
		$settings = get_option('postman_options');
		$settings['force_smtp'] = true; // Fatal si $settings est une chaîne (string).
		update_option('postman_options', $settings);
	}
});

Was kaputt geht: wenn get_option('postman_options') gibt ein zurück Schnur (korrupte Option) oder falseZugang $settings['force_smtp'] verursacht einen schwerwiegenden Fehler in PHP 8.1+.

Code NACHHER (korrigiert: Wir prüfen den Kontext und den Typ und ändern die Lese-/Schreiboptionen nicht bei jedem Ladevorgang):

<?php
/**
 * MU-plugin recommandé : /wp-content/mu-plugins/postman-admin-guard.php
 * Sauvegardez avant de modifier.
 */
add_action('admin_init', function () {
	// Ne jamais supposer que $_GET existe.
	$page = isset($_GET['page']) ? sanitize_key(wp_unslash($_GET['page'])) : '';

	// On limite strictement au slug de page visé.
	if ($page !== 'postman') {
		return;
	}

	// On lit l’option et on valide le type.
	$settings = get_option('postman_options');

	if (!is_array($settings)) {
		// On évite le fatal error. À ce stade, on journalise pour diagnostic.
		error_log('[Post SMTP] Option postman_options inattendue (non-array) sur la page Settings.');
		return;
	}

	// Exemple : si vous devez vraiment ajuster un flag, faites-le sur une action explicite
	// (submit de formulaire) plutôt qu’à chaque admin_init.
});

Warum dies das Problem behebt: Sie verhindern, dass Drittanbietercode die SMTP-Post-Seite durch den Zugriff auf nicht validierte Daten beeinträchtigt. Und vor allem vermeiden Sie, bei jedem Seitenaufruf in die Datenbank zu schreiben, was eine weitere Fehlerquelle darstellt.

Erstellen Sie das mu-Plugin (empfohlen)

Einen Ordner erstellen wp-content/mu-plugins Falls es nicht existiert, dann eine Datei postman-admin-guard.php im Inneren. Die mu-Plugins werden automatisch von WordPress geladen.

Offizielles Dokument: Unbedingt zu verwendende Plugins


Lösung 3: Bereinigen einer beschädigten/inkompatiblen Option nach einem Update (WP-CLI / Datenbank)

Dies ist mit Abstand die kostengünstigste Methode, um die Ursache zu beheben, wenn im Trace Fehler des folgenden Typs aufgeführt sind:

  • array_merge(): Argument #2 must be of type array, string given
  • Cannot access offset of type string on string
  • foreach() argument must be of type array|object, string given

Das Szenario: Post SMTP erwartet eine als Array serialisierte Option, die Datenbank enthält jedoch einen String, manchmal aufgrund folgender Gründe:

  • eine unterbrochene Migration
  • ein Objekt-Caching-Plugin (Redis/Memcached), das einen veralteten Wert lieferte
  • ein Ausschnitt, der einen update_option() mit einer schlechten Struktur

Schritt 1 – Identifizieren Sie die betreffende Option.

Suchen Sie im Trace nach dem genauen Namen der Option. Die Namen variieren je nach Version, aber Sie werden oft etwas Ähnliches wie Folgendes sehen:

  • postman_options
  • post_smtp_settings
  • postman_plugin_options

Wenn Sie es nicht sehen, schauen Sie in debug.log eine Zeile mit get_option oder eine „Einstellungen/Optionen“-Datei.

Option A – Sauberes Zurücksetzen über WP-CLI (die sicherste Option)

Falls Sie WP-CLI verwenden:

1) Listen Sie die Kandidatenoptionen auf:

wp option list --search=postman --fields=option_name,autoload --format=table
wp option list --search=post_smtp --fields=option_name,autoload --format=table

2) Überprüfen Sie eine Option (um festzustellen, ob es sich um eine Zeichenkette und nicht um ein serialisiertes Array handelt):

wp option get postman_options

3) Speichern Sie die Option, bevor Sie sie löschen (sehr nützlich, falls Sie sie wiederherstellen müssen):

wp option get postman_options --format=json > /tmp/postman_options_backup.json

4) Löschen Sie die beschädigte Option (Post SMTP erstellt sie mit Standardwerten neu):

wp option delete postman_options

WP-CLI-Dokumentation (Referenz): WP-CLI-Optionsbefehl

Warum es effektiv ist Sie entfernen die fehlerhaften Daten, die den Fehler auslösen. Das Plugin wird mit einer sauberen Konfiguration neu gestartet, und die Einstellungsseite wird wieder angezeigt.

Option B — Zurücksetzen über phpMyAdmin (falls Sie WP-CLI nicht installiert haben)

Datenbank speichern Vorher. Damals:

  1. Öffnen Sie den Tisch wp_options (Das Präfix kann abweichen).
  2. Suchen Sie nach der Option (z.B. postman_options).
  3. Kopiere den Wert in eine Textdatei (zur Sicherung).
  4. Löschen Sie die Zeile (oder ändern Sie sie) option_value en a:0:{} (vorausgesetzt, man weiß, was man tut).

Hinweis: ersetzen durch a:0:{} (Serialisierte leere Arrays) können zwar einige Installationsabläufe umgehen, sind aber nicht universell anwendbar. Die Deinstallation ist oft sauberer.

Option C – Temporäre Lösung, um das Problem zu überstehen und auf das Admin-Panel zugreifen zu können.

Falls Sie nicht weiterkommen und lediglich das Admin-Panel erneut öffnen müssen, um ein Plugin zu deaktivieren oder Daten zu exportieren, können Sie mithilfe eines MU-Plugins eine temporäre Schutzmaßnahme hinzufügen. Dies ist keine endgültige Lösung für das Plugin, sondern lediglich eine zusätzliche Sicherheitsmaßnahme.

Wo man hinkleben soll : /wp-content/mu-plugins/postman-option-safety.php

<?php
/**
 * Filet de sécurité temporaire : corrige une option Post SMTP si elle est manifestement corrompue.
 * À retirer après dépannage.
 */

add_action('plugins_loaded', function () {
	// Changez ce nom d’option selon ce que vous voyez dans vos logs.
	$option_name = 'postman_options';

	$value = get_option($option_name, null);

	// Si l’option est une string non sérialisée, on la remet à zéro.
	// Attention : cela réinitialise potentiellement la configuration SMTP.
	if (is_string($value) && $value !== '' && !is_serialized($value)) {
		error_log('[Post SMTP] Option corrompue détectée (' . $option_name . '), réinitialisation.');
		delete_option($option_name);
	}
});

Warum es funktioniert: SMTP stößt nicht mehr auf einen „unmöglichen“ Wert und kann seine Standardeinstellungen wiederherstellen. Risiko: Ihre SMTP-Konfiguration geht verloren (daher ist eine vorherige Sicherung über WP-CLI/DB so wichtig).

Referenz auf get_option() : get_option ()


Nachkorrekturprüfungen

Sobald die Ursache behoben ist, überprüfen Sie dies anhand einer einfachen Checkliste:

  1. geöffnet SMTP-Post → Einstellungen Die Seite sollte fehlerfrei angezeigt werden.
  2. geöffnet wp-content/debug.log : Kein „Schwerwiegender Fehler“ mehr.
  3. Senden Sie eine Test-E-Mail von Post SMTP (oder von einem Kontaktformular).
  4. Prüfen Sie, ob das Senden auch über funktioniert WP-Cron wenn Sie geplante Mailings haben (Newsletter, WooCommerce).
  5. Deaktivieren Sie dann den Debug-Modus (oder lassen Sie ihn eingeschaltet). WP_DEBUG_LOG (Nur in einer Staging-Umgebung aktiv).

Falls Sie einen Cache (Plugin, Server, CDN) verwenden, leeren Sie ihn:

  • Cache-Plugin (Seitencache)
  • Server-Cache (Varnish / Nginx Microcache)
  • OPcache (sofern Ihr Hosting-Anbieter dies zulässt) – sehr nützlich nach der Neuinstallation eines Plugins

Wenn das immer noch nicht funktioniert

Wenn die Einstellungsseite ständig abstürzt, folge ich einer festgelegten Vorgehensweise. Dadurch vermeide ich unnötiges Hin und Her.

1) Installieren Sie Post SMTP sauber neu (wenn möglich, ohne die Konfiguration zu verlieren).

Eine unvollständige Installation (fehlender Anbieter) verursacht „Klasse nicht gefunden“-Fehler. Vorgehensweise:

  1. Optionen speichern (wenn möglich, als JSON-Datei mit WP-CLI exportieren).
  2. Post-SMTP deaktivieren.
  3. Löschen Sie den Ordner /wp-content/plugins/post-smtp/ (nur dieses Plugin).
  4. Neu installieren von WordPress.org (SMTP-Post) (nicht aus einer dubiosen ZIP-Datei).
  5. Die Einstellungsseite erneut aktivieren und testen.

2) PHP-Version und Erweiterungen überprüfen.

  • Unter „Tools“ → „Website-Integrität“ die PHP-Ziel-URL überprüfen. 8.1.
  • Überprüfen Sie die Erweiterungen: openssl, mbstring, curlPost-SMTP hängt oft indirekt davon ab.

PHP-Dokumentation (z. B. OpenSSL): PHP OpenSSL

3) Deaktivieren Sie vorübergehend die Plugins „Admin“ und „Sicherheit“.

Im Systemprüfungsmodus (Fehlerbehebungsmodus) Folgendes deaktivieren:

  • JS/CSS minimieren/zusammenführen (insbesondere wenn es den Adminbereich betrifft)
  • Sicherheits-Plugins, die REST/AJAX filtern
  • Snippet-Plugins (ein fehlerhaftes Snippet genügt)

Testen Sie jedes Mal, indem Sie zu Post-SMTP → Einstellungen gehen. Wenn das Problem erneut auftritt, haben Sie die Ursache gefunden.

4) Überprüfen Sie die Speichergrenzen.

Wenn im Trace Speicher erwähnt wird:

  • BESUCHE memory_limit auf der PHP-Seite (Hosting-Panel) und nicht über WordPress.
  • Vermeiden Sie es, sich auf Folgendes zu verlassen: define('WP_MEMORY_LIMIT', ...) wenn Ihr Hosting-Anbieter ein niedrigeres Limit erzwingt.

WordPress-Referenz (Speicher): WP_MEMORY_LIMIT

5) Permalinks / Rewrite-Regeln prüfen (hier selten, aber schon vorgekommen).

Wenn Post SMTP interne Endpunkte lädt und einen 404-Fehler zurückgibt:

  1. Einstellungen → Permalinks → Speichern (ohne Änderungen)

Dies zwingt WordPress zur Neugenerierung der Rewrite-Regeln. Referenz: spülen_umschreiben_regeln() (nicht auf jeder Seite aufrufen).

6) Wenn Sie einen Absturz an einem bestimmten Haken beobachten

Häufiges Problem: Verwechslung zwischen Aktionen et filtresEin Filter muss Rückkehr Ein Wert. Eine Aktie bringt nichts zurück.

Beispiel VORHER (fehlerhaft: verwendet add_filter, gibt aber nichts zurück):

<?php
add_filter('admin_menu', function () {
	// Mauvais : admin_menu est une action, pas un filtre.
	// Et on ne retourne rien : comportement imprévisible.
});

Beispiel NACH der Korrektur:

<?php
add_action('admin_menu', function () {
	// Correct : admin_menu est une action.
});

Doc-Hooks: Plugin-API: Hooks

Häufige Fallstricke und Fehler

Symptom / Fehler Mögliche Ursache Empfohlene Lösung
Sie fügen den Codeausschnitt in die falsche Datei ein. Code, der im übergeordneten Theme oder in einem sich selbst aktualisierenden Plugin platziert ist verwenden Sie ein Mu-Plugin oder ein benutzerdefiniertes Plugin, niemals der Kern, niemals das übergeordnete Theme
Schwerwiegender Fehler nach dem Hinzufügen von Code: „unerwartetes Token“ Vergessenes Semikolon, zusätzliche geschweifte Klammer, nicht korrekt geschlossenes PHP-Tag Die Änderungen werden per FTP rückgängig gemacht, die Syntax korrigiert und anschließend mit einem Editor überprüft.
Das Protokoll bleibt leer. Berechtigungen, WP_DEBUG falsch platziert, Hosting-Anbieter blockiert Schreibzugriff Überprüfen Sie den Standort in wp-config.php + Serverprotokolle
Im Fehlersuchmodus der Systemprüfung funktioniert es, aber nicht im Normalbetrieb. Plugin- oder Theme-Konflikt Reaktivieren Sie sie nacheinander im Fehlerbehebungsmodus, bis Sie den Übeltäter gefunden haben.
Die Einstellungsseite wird geladen, aber die Registerkarten bleiben leer. REST/AJAX blockiert, Admin-Minifizierung Konsole + Netzwerk, Administrator-Minifizierung deaktivieren, zulassen /wp-json/
Fehler „Zulässiger Speicherplatz erschöpft“ PHP-Speicherlimit zu niedrig BESUCHE memory_limit Serverseitig, dann erneut testen
Sie testen in der Produktionsumgebung ohne Datensicherung. Niederschlag Klonen Sie die Staging-Umgebung oder zumindest eine Datenbanksicherung, bevor Sie Optionen entfernen.
Sie verwenden ein veraltetes Tutorial (PHP 7) auf WordPress 6.9.4. Der Code ist nicht kompatibel mit PHP 8.1+ (TypeError, veraltete Funktionen). Anpassung mit Typvalidierung, sanitize_*und korrekte Haken

Variante / Alternative

Methode ohne Code: Post SMTP vorübergehend ersetzen

Falls Sie den E-Mail-Versand unbedingt wiederherstellen müssen, während Sie das Problem diagnostizieren:

  • Installieren Sie ein anderes seriöses SMTP-Plugin, konfigurieren Sie es und testen Sie den Versand.
  • Lassen Sie den Post-SMTP-Server für die Dauer des [Datum] deaktiviert. corriger.

Warnung: Zwei gleichzeitig aktivierte SMTP-Plugins können um den Hook konkurrieren. wp_mail und zu inkonsistentem Verhalten führen (doppeltes Senden, fehlerhafte Header).

Fortgeschrittenere Methode: wp_mail und Hooks verfolgen, ohne das Plugin zu verändern.

Für Entwickler (oder bei der Zusammenarbeit mit einem Serviceanbieter) lässt sich der E-Mail-Versand serverseitig in WordPress mithilfe eines MU-Plugins implementieren. Ziel ist es, zu überprüfen, ob die SMTP-Anfrage korrekt bearbeitet wird. wp_mail und wenn der Fehler von einer Administratoroberfläche oder der Mail-Pipeline stammt.

Wo man hinkleben soll : /wp-content/mu-plugins/mail-trace.php

<?php
/**
 * Trace légère de wp_mail (ne loggez jamais des contenus sensibles en production).
 * À utiliser temporairement.
 */

add_filter('wp_mail', function ($args) {
	// $args contient to/subject/message/headers/attachments.
	// Risque sécurité : ne loggez pas le message complet si vous envoyez des données privées.
	$to = is_array($args['to']) ? implode(',', $args['to']) : (string) $args['to'];

	error_log('[MailTrace] wp_mail appelé vers: ' . $to . ' | sujet: ' . (string) $args['subject']);

	return $args; // Filtre = on doit retourner la valeur
}, 10, 1);

Offizielle Referenz: wp_mail-Filter

Vermeiden Sie dieses Problem in Zukunft

  • Führen Sie die Aktualisierungen an einer Testkopie durch. Wenn möglich. Die Einstellungsseiten sind oft der erste Ort, an dem ein Migrationsfehler auftritt.
  • Halten Sie PHP auf dem neuesten Stand. (Mindestens Version 8.1 empfohlen). Viele „seltsame“ Fehler entstehen durch eine veraltete PHP-Version oder fehlende Erweiterungen.
  • Vermeiden Sie die Verwendung von "globalen" Code-Snippets in admin_init. ohne Sicherheitsvorkehrungen. Immer überprüfen:
    • der Kontext (Seite/Bildschirm)
    • Berechtigungen (current_user_can())
    • die Art der Optionen (is_array(), is_string())
  • Wenden Sie die Minifizierung nicht auf den Administrator an. Es sei denn, Sie wissen genau, was Sie tun. Ich habe schon oft erlebt, dass Einstellungsseiten aufgrund von verkettetem JavaScript nicht mehr funktionierten.
  • Überwachen Sie die Protokolle. : Einfache Drehung und Zugänglichkeit gewährleisten. Einem schwerwiegenden Fehler gehen fast immer hilfreiche Warnungen voraus.

„Safeguard“-Codeausschnitt für Admin-Seiten (wiederverwendbare Vorlage)

Dieses Modell erspart Ihnen die Ausführung von Code auf allen Administrationsseiten. Dadurch wird das Risiko von Konflikten erheblich reduziert.

Wo man hinkleben soll : mu-Plugin oder benutzerdefiniertes Plugin.

<?php
/**
 * Modèle : exécuter du code uniquement sur un écran admin précis.
 */

add_action('current_screen', function ($screen) {
	if (!($screen instanceof WP_Screen)) {
		return;
	}

	// Exemple : adaptez selon l’ID réel de l’écran (à lire via Query Monitor).
	if ($screen->id !== 'toplevel_page_postman') {
		return;
	}

	// Ici, votre code spécifique à la page Post SMTP.
	// Toujours valider les types et permissions.
	if (!current_user_can('manage_options')) {
		return;
	}
});

Reference: Hook current_screen

Ressourcen

Häufig gestellte Fragen

Soll ich Post-SMTP sofort deaktivieren?

Wenn die öffentliche Website funktioniert und nur die Einstellungsseite abstürzt, können Sie zunächst die Protokollierung aktivieren und mithilfe des Integritätschecks das Problem eingrenzen. Falls das Admin-Panel instabil wird (globaler Fehler), deaktivieren Sie das Plugin per FTP, indem Sie den Ordner umbenennen. post-smtp.

Ich erhalte die Meldung „Es ist ein kritischer Fehler aufgetreten…“, aber keine weiteren Details.

ermöglichen WP_DEBUG_LOG (Lösung 1) Überprüfen Sie außerdem die Serverprotokolle. Bei manchen Hosting-Paketen ist es WordPress nicht erlaubt, in die Serverprotokolle zu schreiben. wp-content solange die Berechtigungen nicht korrekt sind.

Wird das Löschen einer Option meine E-Mails beschädigen?

Ja, das ist unter Umständen möglich: Sie müssen die Konfiguration zurücksetzen. Speichern Sie die Option vorher (WP-CLI: JSON exportieren oder Datenbank kopieren) und konfigurieren Sie SMTP anschließend in der Benutzeroberfläche neu, sobald der Fehler behoben ist.

Kann Divi 5 / Elementor / Avada diesen schwerwiegenden Fehler verursachen?

Nicht direkt. Ihre Ökosysteme umfassen jedoch häufig Optimierungs-Plugins, Sicherheits-Plugins oder Admin-Add-ons. Der Health-Check mit einem Standard-Theme ermöglicht eine schnelle Feststellung.

Ich verwende PHP 8.0 und habe Angst, auf 8.1 oder höher zu aktualisieren.

Für WordPress 6.9.4 (Stand 2026) wird PHP 8.1 oder höher als Basisversion empfohlen. Viele Plugins beheben Fehler nur in diesen Versionen. Wechseln Sie in die Staging-Umgebung und überprüfen Sie Ihre kritischen Plugins.

Warum erscheint der Fehler nur auf der Einstellungsseite?

Weil der Code, der bestimmte Optionen liest/schreibt, bestimmte Dateien lädt oder eine bestimmte Benutzeroberfläche initialisiert, nur auf diesem Bildschirm ausgeführt wird. Der Rest der Website kann weiterhin funktionieren.

Ich erhalte die Fehlermeldung „Klasse nicht gefunden“ in vendor/autoload.php

Dies liegt häufig an einem unvollständigen Update (abgeschnittene ZIP-Datei, Berechtigungsprobleme, Server-Antivirus). Die schnellste Lösung ist eine Neuinstallation des Plugins von wordpress.org, gefolgt von einer Cache-/OPcache-Bereinigung, falls möglich.

Muss ich die Plugin-Dateien ändern, um das Problem zu beheben?

Vermeiden Sie dies. Alle Änderungen werden beim nächsten Update überschrieben. Versuchen Sie stattdessen, das Programm neu zu installieren, die Optionen zurückzusetzen oder vorübergehend ein MU-Plugin als Schutzmaßnahme zu verwenden, während Sie die Ursache ermitteln.

Ich kann überhaupt nicht mehr auf das Admin-Panel zugreifen, was soll ich tun?

Benennen Sie den Plugin-Ordner vorübergehend per FTP um (post-smtppost-smtp.offUm die Deaktivierung zu erzwingen, aktivieren Sie anschließend WP_DEBUG_LOG erneut und setzen Sie die Diagnose fort.

Welcher Betrag muss mindestens an den Post-SMTP-Support gesendet werden?

Der vollständige Trace (ohne sensible Daten), Ihre Versionen (WordPress 6.9.4, PHP, Post SMTP), die Liste der aktiven Plugins und das Ergebnis des Health Check-Tests (tritt der Fehler auch auf, wenn alle anderen Plugins deaktiviert sind?).