Betreibt man eine eigene Webseite, sollte man auch zwischendurch die Logdateien des Webhosting-Servers überprüfen. Nicht jeder Provider stellt eine E-Mail-Benachrichtigung im Falle eines Fehlers zur Verfügung. Eine regelmäßige Kontrolle der ERROR-Logs kann somit hilfreich sein, eine sofortige Maßnahme zu ergreifen um den Fehler zu beseitigen.
Die ERROR-Logs erfassen alle aufgetretenen Fehler im Zusammenhang mit der Webseite. Ist eine Seite zum Beispiel nicht erreichbar, wird eine Meldung ausgegeben, dass sie nicht angezeigt werden konnte, weil die Index-Datei fehlt und der direkte Zugriff auf das Verzeichnis verboten ist.
[Tue Apr 23 20:41:25 2019] [autoindex:error] [pid 13438] [client 47.254.xxx.xxx] [host www.technik-tipps-und-tricks.de] AH01276: Cannot serve directory /is/htdocs/wpXXXXXXXXX_XXXXXXXXXX/www/wp-content/uploads/: No matching DirectoryIndex (index.html,index.htm,index.shtml,index.php,index.php5,index.wml,index.xml) found, and server-generated directory index forbidden by Options directive
In dem Beispiel weiter unten wird die Suche und Behebung eines Datenbankfehlers auf einem HostEurope Webserver beschrieben.
Webserver Logs überprüfen
Die Log-Dateien findet man bei HostEurope nach dem einloggen im KIS unter Produktverwaltung ⇒ WEBHOSTING ⇒ Konfigurieren ⇒ Statistiken & Logfiles ⇒ Laufende ERROR-Logs ansehen.


Das Webhosting-Error-Log enthält eine Fehlermeldung über eine Datenbank-Tabellenspalte mit dem Namen Time, die keinen NULL-Wert speichern kann.
[Sat Apr 20 02:06:39 2019] [php7:notice] [pid 20095] [client 46.229.xxx.xxx] [host www.technik-tipps-und-tricks.de] WordPress-Datenbank-Fehler Column 'Time' cannot be null f\xc3\xbcr Abfrage INSERT INTO my_blog_vcp_log VALUES (NULL,'46.229.xxx.xxx',NULL) von require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), WP_Hook-]do_action, WP_Hook-]apply_filters, vcp_log_user
Die SQL-Abfrage INSERT INTO my_blog_vcp_log VALUES (NULL,’46.229.xxx.xxx’,NULL) nennt auch die betroffene Datenbanktabelle (my_blog_vcp_log).
Wie kommt es zu diesem Fehler? Ein Blick in die Datenbankstruktur wäre hier der nächste Schritt.
Datenbanktabellenstruktur anzeigen
Mit phpMyAdmin bei der Webserver-Datenbankadministration anmelden. Die WordPress Datenbanktabelle my_blog_vcp_log, wo der SQL INSERT-Befehl den Fehler versucht, anklicken.

An der dritten Stelle der Tabelle steht die im Fehler-Log erwähnte “Time“-Spalte. Sie ist vom Typ timestamp, erlaubt keine NULL-Werte und standardmäßig soll der aktuelle Zeitstempel eingetragen werden. Und hier liegt das Problem. Die INSERT-Abfrage übergibt laut der Fehlermeldung den Parameter Time mit dem Wert NULL, der nicht erlaubt ist. Aber wo wird diese INSERT-Abfrage erstellt? Die Antwort befindet sich am Ende der Fehlermeldung. Es ist die init-Action-Hook-Funktion vcp_log_user. Leider ist die Stelle der Funktion im Quellcode nicht angegeben. Nach dieser wird jetzt mit dem Notepad++ Editor gesucht.
Funktion in WordPress-Dateien suchen
Zuerst die komplette Webseite mit einem FTP-Client wie FileZilla herunterladen. Schneller geht es wenn man einen Backup auf dem Webserver erstellt, diesen herunterlädt und entpackt.
Notepad++ öffnen und aus der Menüleiste Suchen ⇒ In Dateien suchen … wählen. Die Einstellungen wie auf dem folgenden Bild anpassen und Alle suchen anklicken.

Wird die gesuchte Funktion gefunden, werden alle Vorkommen aufgelistet.

Der Funktionsname kommt zweimal vor in der Plugin-Datei /www/wp-content/plugins/easy-visitor-counter/index.php. In der Zeile 99 ist die gesuchte Funktion definiert und in der Zeile 97 dem init-Hook hinzugefügt. Diese Datei wird jetzt direkt auf dem auf dem FTP-Server im Notepad++ zum Editieren geöffnet.
FileZilla Standardeditor konfigurieren
In FileZilla ⇒ Bearbeiten ⇒ Einstellungen ⇒ Bearbeiten von Dateien “Benutzerdefinierten Editor verwenden” wählen und den Pfad zur notepad++.exe eingeben. Das Häckchen bei “Lokal bearbeitete Dateien beobachten und bei Änderung das Hochladen vorschlagen” setzen und mit OK speichern.

Webserver-Datei im Notepad++ öffnen
Mit einem Rechtsklick auf die Webserver-Datei /www/wp-content/plugins/easy-visitor-counter/index.php im FileZilla-Fenster das “Ansehen/Bearbeiten” aus dem Context-Menü wählen.

Zu der vcp_log_user-Funktionsdefinition in der Zeile 99 scrollen.

Wie man sieht, ist der dritte Parameter Time in der SQL-Abfrage auf den Wert NULL festgelegt. Dieser Wert verursacht den Fehler, der mit der Übergabe eines formatierten Zeitstempels behoben wird.

Eine andere und einfachste Methode wäre den in der Datenbank definierten Standardwert CURRENT_TIMESTAMP mit der Übergabe vom DEFAULT-Wert auszulösen. Die SQL-Abfrage sollte dann folgend aussehen:
$sqlQuery = "INSERT INTO $table_name VALUES (NULL,'".$_SERVER['REMOTE_ADDR']."',DEFAULT)";
Das gleiche Ergebnis erreicht man mit der explizierten Übergabe der Spaltennamen und ihrer Werte und schließt dabei die betroffene Spalte aus.
$sqlQuery = "INSERT INTO $table_name (LogID, IP) VALUES (NULL,'".$_SERVER['REMOTE_ADDR']."')";
Die geänderte Datei speichern. Wechselt man zum FileZilla-Fenster, wird man gefragt ob die Datei auf den Server hochgeladen werden soll. Mit Ja bestätigen.

Die Fehlermeldung sollte im ERROR-Log nicht mehr erscheinen.
War dieser Beitrag für dich informativ? Hat er dir gefallen oder geholfen?
Dann unterstütze die Weiterentwicklung dieser Webseite mit einer kleinen Spende!
Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden. Die Werbung alleine deckt gerade mal die Server Kosten.