PHP Fatal Errors
-
Hi,
ich bräuchte mal bitte Euere Hilfe oder Einschätzung.
ich sehe bei mir im PHP Error Log sehr viele Warning und Fatal Error. Wir dachten erst, dass es einen Konfikt wegen dem Memcache & WP Rocket gibt, aber ich habe den Mamcache gestern deaktiviert.
Wie man sieht, laufen trotzdem PHP Fehler auf.
Was ich nicht verstehe: ein Fatal Error bedeutet doch eigentlich (so kenne ich es zumindest), dass die Seite ab dann nicht mehr erreichbar ist, bis man den Error beseitigt. Ich merke aber keine Ausfälle und habe selber nichts geändert. Und die Seite ist immer live.
Und wie kommt es überhaupt zu einem Fatal Error, wenn laut Beschreibung nur eine Klasse fehlt?
Uncaught Error: Class „WP_Widget“ not foundHier auch nochmal ein Screenshot von den Logs.
Weiß jemand, was es damit auf sich haben kann und vor allem, wie ich es beheben kann?
Viele Grüße
MichaelDie Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
-
Ein Fatal Error legt aber nicht zwingend die gesamte Website lahm.
Danke für die Info, das war mir nicht bewusst. Ich dachte, ein Fatal Error legt quasi immer die Seite lahm.
Hallo zusammen,
ich muss das Thema leider nochmal aufmachen.
Es kommen jetzt doch wieder sehr viele Fatal Errors rein. Hier der Screenshot dazu.
Ich hatte meine Seite vor 2 Wochen zu einem anderen Host migriert. Ich hatte dort in den alten Logs mal geschaut, da hatte ich diese Fatal Errors nie.
– können die Fehler durch die Migration entstanden sein?
– können die Fehler durch andere Konfigurationen der Server kommen?-
Diese Antwort wurde vor 3 Jahren, 9 Monaten von
michaelxxx geändert.
Ein Fehler, der im Log steht, betrifft diese Zeile
require ABSPATH . WPINC . '/blocks/archives.php';
Es sieht bei dir so aus, als wenn die Defines ABSPATH und WPINC überhaupt nicht gesetzt wären, was allerdings extrem merkwürdig ist.– können die Fehler durch die Migration entstanden sein?
– können die Fehler durch andere Konfigurationen der Server kommen?Wäre möglich, aber wirklich erklären kann ich mir das nicht.
Mich würde mal der Inhalt von z.b.
wp-includes/template-canvas.phpinteressieren, weil dort eigentlich weder die KonstanteABSPATHnochWPINCüberhaupt erwähnt werden und die wenigen Funktionen der Datei auch keinen Anlass geben, diese Konstanten zu nutzen.Wenn hier keine Dateien kompromittiert wurden, würde ich auf einen fehlerhaft aufgesetzten Webserver tippen, vielleicht auch Probleme beim Caching (aber das ist jetzt eher schlecht geraten).
Hi @pixolin,
nichts leichterals das 🙂
<?php /** * Template canvas file to render the current 'wp_template'. * * @package WordPress */ /* * Get the template HTML. * This needs to run before <head> so that blocks can add scripts and styles in wp_head(). */ $template_html = get_the_block_template_html(); ?><!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>" /> <?php wp_head(); ?> </head> <body <?php body_class(); ?>> <?php wp_body_open(); ?> <?php echo $template_html; // phpcs:ignore WordPress.Security.EscapeOutput ?> <?php wp_footer(); ?> </body> </html>Sieht das für Dich soweit ok aus?
fehlerhaft aufgesetzten Webserver tippen, vielleicht auch Probleme beim Caching
Ist die Frage, wie man das herausfinden kann? Könnte natürlich mit dem Memcached zu tun haben, den ich vorher nicht hatte.
Das scheint soweit identisch mit der Datei auf dem SVN-Server: https://core.trac.wordpress.org/browser/trunk/src/wp-includes/template-canvas.php
Sorry, ich bin an der Stelle raus. Zur Serverkonfiguration kann ich dir kaum weiterhelfen, auch weil mir Informationen zum Server fehlen.
@pixolin Mein Host hat nochmal recherchiert, welche IP diese Fehler verursacht. Ist wohl eine IP von Stackpath, daher gehe ich davon aus, dass es was (was Du ja auch vermutest) mit dem CDN und Caching von WPRocket zu tun hat. Die nutzen meines Wissens nach Stackpath.
Mein Host hat mich gefragt, ob ich im wp-includes Verzeichnis eine htaccess Datei ablegen kann mit:
Order Allow,Deny
Allow from 127.0.0.1
Deny from allMacht das Sinn? Oder kann es hier zu Probleme in WordPress kommen, z.B. mit anderen Plugins oder Funktionalitäten?
-
Diese Antwort wurde vor 3 Jahren, 9 Monaten von
michaelxxx geändert.
Die
.htaccess-Regel scheint sinnvoll zu sein, aber ich würde in dem Fall erst beim Support von WP-Rocket nachfragen. Denen sollten solche Probleme mit dem CDN bekannt sein. Meine Erfahrung ist, dass WP-Rocket auch schon mal eine individuelle Lösung anbietet – ich bin allerdings nicht mehr zahlender Kunde und habe den Support nur einmal in Anspruch nehmen müssen.Hallo zusammen,
ich würde gerne nochmal dieses Thema öffnen, da ich gerne verstehen möchte, was und warum diese Fatal Error auftreten.
Die letzten 3 Tage hatte ich keine Einträge in meinem PHP Log. Alles gut. Seit heute morgen um 4.51 Uhr läuft er wieder voll mit Fatal Erorrs, die ich nicht verstehe. Vor allem hab ich ja nix an der Seite verändert, noch war ich zu der Zeit online.
Hier mal ein Auszug der Error Meldungen.
Hat jemand von Euch eine Idee, wie ich mich der Fehlerquelle noch weiter nähern könnte? Was könnte um 4.51 Uhr solche Fehler auslösen?
Um 4:51 Uhr kann jemand (oder ein Bot) die Website besucht haben, es kann ein Cron-Script ausgeführt worden sein … Eventuell findest du im Server-Access-Log Informationen. Aber die Uhrzeit alleine sagt wenig aus – wenn es bei uns 4:51 Uhr ist, ist es in San Francisco früher Abend und in Tokio Mittagszeit …
Mit dem Plugin WP Control kannst du prüfen, welche Skripte zeitgesteuert ausgeführt werden. Vielleicht liefert das eine interessante Information?
Was mich an der ersten Fehlermeldung irritiert:
Es wird reklamiert, dass eine DateiABSPATHWPINC/options.phpnicht gefunden wird. Das überrascht wenig, weil es die KonstanteABSPATHWPINCnicht gibt, wohl aber zwei KonstantenABSPATH(der absolute Pfad zur WordPress-Installation) undWPINC(das Verzeichniswp-includes– nur müsste dann ein Punkt zwischen den Konstanten sein). Der Fehler bezieht sich auf die Zeile 8 der Dateiwp-includes/functions.php, in der die Konstanten aber korrekt verwendet werden:require ABSPATH . WPINC . '/option.php';Ich würde auf einen Fehler bei der Serverkonfiguration tippen, fühle mich da aber überfragt.
Kannst du nochmal die letzten 8 Zeilen der
wp-config.phpposten?Ja, gerne:
/** Der absolute Pfad zum WordPress-Verzeichnis. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname(__FILE__) . '/' ); define('CONCATENATE_SCRIPTS', false); } /** Definiert WordPress-Variablen und fügt Dateien ein. */ require_once( ABSPATH . 'wp-settings.php' ); /* Das war’s, Schluss mit dem Bearbeiten! Viel Spaß. */ define( 'MEDIA_TRASH', true ); /* That's all, stop editing! Happy publishing. */Hilft das weiter?
Kannst du diese Zeilen bitte mal komplett auskommentieren und folgendes anhängen:
/** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';Das steht normalerweise unter den Zeilen
/* Das war’s, Schluss mit dem Bearbeiten! Viel Spaß. */ /* That's all, stop editing! Happy publishing. */… die soviel heißen sollen wie „ab hier nix mehr reinschreiben“.
@pixolin Danke, das kann ich gerne mal ausprobieren.
Zum Verständnis: was macht denn dieses define MEDIA_TRASH = true, bzw. von welcher Einstellung oder welchem Plugin kommt das denn? Ich habe das da nicht reingeschrieben.
Vor allem hatte ich ja am Anfang dieses Post meine wp-config mal gepostet, da war es noch über dem ABSPATH Part:
define( 'MEDIA_TRASH', true ); if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname(__FILE__) . '/' ); } require_once( ABSPATH . 'wp-settings.php' );Jetzt steht es darunter zwischen den „Schluss mit dem Bearbeiten!“. Wie kann das sein?
Und das:
/* Das war’s, Schluss mit dem Bearbeiten! Viel Spaß. */ /* That's all, stop editing! Happy publishing. */soll ich jetzt mal ganz rausschmeißen, oder hab ich Dich da falsch verstanden?
-
Diese Antwort wurde vor 3 Jahren, 8 Monaten von
michaelxxx geändert.
was macht denn dieses define MEDIA_TRASH = true
Mit der Konstante wird die Möglichkeit aktiviert, Medien nicht direkt zu löschen, sondern in einen Papierkorb zu verschieben. Dagegen ist auch nichts einzuwenden, es sollte nur an der richtigen Stelle stehen.
Was ist die richtige Stelle? Alles oberhalb von/* That's all, stop editing! Happy blogging. */. Diese Zeile soll dir sagen „Ab hier nichts mehr eintragen“ und darunter soll dann nur noch/** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';stehen. (Hey, so hatte ich das doch auch geschrieben? :P)
Jetzt steht es darunter zwischen den „Schluss mit dem Bearbeiten!“. Wie kann das sein?
Auch das habe ich schon beschrieben: Ein Plugin wird nach der Zeichenkette
/* That's all,gesucht haben und den Eintrag davor gesetzt haben. Da (nur) bei der deutschsprachigen WordPress-Version auch eine übersetzte Zeile besteht, landet die Definition der Konstante eben dazwischen. Welches Plugin das eingetragen hat? Keine Ahnung … ¯\_(ツ)_/¯Und das … soll ich jetzt mal ganz rausschmeißen, oder hab ich Dich da falsch verstanden?
Ja, du hast mich falsch verstanden. 🙂
Nochmal, ein letztes Mal: an der Stelle könnte auch eine Linie stehen – der Text ist nur eine Gedankenstütze, dass du selber keine weiteren Ergänzungen anhängst (was übrigens bei Strato gerne ignoriert wird).
Du hast aber in den letzten Zeilen einen anderen Code als ich ihn in einer Standard-Installation sehe.Probier bitte, den Code, den du gepostet hast
/** Der absolute Pfad zum WordPress-Verzeichnis. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname(__FILE__) . '/' ); define('CONCATENATE_SCRIPTS', false); } /** Definiert WordPress-Variablen und fügt Dateien ein. */ require_once( ABSPATH . 'wp-settings.php' );mit folgendem Code zu ersetzen:
/** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';(oder, wie ich es vorher geschrieben habe, den alten Code auskommentieren und den neuen anhägen – Ergbnis ist gleich)
-
Diese Antwort wurde vor 3 Jahren, 9 Monaten von
Das Thema „PHP Fatal Errors“ ist für neue Antworten geschlossen.