zen-cart-pro.at - 

Uncaught Error: Found unconstructed IntlDateFormatter in includes/classes/zcDate.php

Beim Provider HostEurope ist oft die Server locale nicht explizit konfiguriert.
Das kann in älteren Zen Cart 1.5.7 deutsch Versionen (1.5.7 bis 1.5.7g) dazu führen, dass Aufrufe von Frontend oder Backend zu einem Internal Server Error 500 führen.

Chrome zeigt: Diese Seite funktioniert nicht
Firefox zeigt: weiße Seite

In den Error Logs ist Folgendes zu finden:
PHP Fatal error: Uncaught Error: Found unconstructed IntlDateFormatter in /xxx/htdocs/xxx/www/xxx/includes/classes/zcDate.php

Zen Cart 1.5.7h ist davon nicht betroffen, führen Sie in Ihrem eigenen Interesse schnellstmöglich ein Update auf 1.5.7h durch

Lösung für ältere 1.5.7 Versionen:

In beiden configure.php (also in der für das Frontend includes/configure.php und in der für den Adminbereich DEINADMIN/includes/configure.php) ganz am Schluss folgenden Eintrag hinzufügen:

@setlocale(LC_TIME, ['de_DE', 'de_US.UTF-8', 'de-DE']);

Beide configure.php herunterladen. Eintrag vornehmen.

Schreibschutz der beiden configure.php am Server aufheben (chmod 666 geben).

Die beiden geänderten configure.php hochladen und die bestehenden überschreiben.
Danach wieder schreibschützen mit chmod 444.

Diese Änderung nur vornehmen, wenn Sie noch nicht auf 1.5.7h aktualisiert haben und exakt von der hier beschriebenen Fehlermeldung betroffen sind!


FEHLER 0071: Es scheint ein Problem mit der Datenbank zu geben

Dieser Fehler bedeutet im Allgemeinen, dass eine oder mehrere Systemtabellen nicht in der Datenbank gefunden werden können.

Mögliche Ursachen:

Problem mit der Datenbankverbindung
z. B. wenn der MySQL-Datenbankdienst nicht funktioniert oder neu gestartet wird

Die Datenbanktabellen sind beschädigt und müssen repariert werden.
Reparieren Sie sie mit phpMyAdmin.

Leere Datenbank
Dies kann vorkommen, wenn Sie in der Datei configure.php gültige DB-Anmeldeinformationen angegeben haben und die Datenbank selbst zwar existiert, aber keine Tabellen enthält.
In diesem Fall müssen Sie zc_install ausführen, um den Inhalt der Datenbank richtig einzurichten.

Tabellen fehlen
Haben Sie kürzlich ein Shopupdate durchgeführt, aber noch nicht zc_install ausgeführt, um die richtigen Tabellen zu erstellen?

Falsche Einstellung des Tabellen-Präfixes
Es wird immer empfohlen für Ihre Zen Cart Datenbanktabellen KEIN Präfix zu verwenden
Haben Sie trotzdem eines verwendet und haben Sie Ihren Shop auf einen anderen Server verschoben?
Dann kann es sein, dass Sie die DB_PREFIX-Einstellung aus der configure.php des alten Shops nicht korrekt in die configure.php des neuen Shops übernommen haben, so dass die Tabellennamen nicht gefunden werden können, weil sie nicht richtig übereinstimmen.
Oder Sie müssen die richtigen passenden Datenbankdaten importieren, da das, was Sie derzeit in der Datenbank haben, nicht für Ihre aktuelle DB_PREFIX-Konfiguration geeignet ist.
Um das richtige Präfix manuell herauszufinden, schauen Sie sich die Datenbank mit phpMyAdmin an und sehen Sie nach, welcher gemeinsame Präfix mit 2-4 Buchstaben alle Tabellennamen einleitet.
Setzen Sie dann diesen Wert in die DB_PREFIX-Definition in Ihrer configure.php-Datei.


Monatsnamen und Wochentage werden auf englisch angezeigt?

Problem:
Monatsnamen und Wochentage werden auf englisch angezeigt, z.B.
Bestelldatum: Tuesday, 11. October 2022 statt Dienstag, 11. Oktober 2022

Grund:
Das hat nichts mit Zen Cart zu tun, Monatsnamen und Wochentage werden durch die jeweilige locale vom Server bereitgestellt, die in den Hauptsprachdateien aufgerufen wird.
z.B.
includes/languages/german.php und DEINADMIN/includes/languages/german.php
suchen für die Ausgabe solcher Datumsangaben nach folgenden locales:
$locales = ['de_DE.UTF-8', 'de_AT.UTF-8', 'de_CH.UTF-8', 'de_DE.ISO_8859-1','de_DE@euro', 'de_DE', 'de', 'ge', 'deu.deu'];

Wird das Datum in der deutschen Sprachversion des Shops trotzdem auf englisch ausgegeben, dann ist auf dem Server wohl keine deutsche locale installiert

Um das zu verifizieren kann das im 1.5.7e Download im Ordner TOOLS/extras bereitgestellte Testscript check_server_locales.php verwendet werden.
Script ins Shopverzeichnis in den Ordner extras hochladen und dann im Browser aufrufen:
https://www.meinshop.de/extras/check_server_locales.php

Die am Server verfügbaren locales werden angezeigt.
Nach Verwendung des Testscripts, nicht vergessen die check_server_locales.php wieder vom Server zu löschen.

Fehlen die deutschen locales, dann zumindest die locale de_DE.UTF-8 installieren

Besteht root Zugriff auf den Server, kann das z.B. unter Ubuntu leicht per Konsole erledigt werden:

sudo locale-gen de_DE.UTF-8
sudo reboot

Danach wird die Ausgabe der Monatsnamen und Wochentage auch in der deutschen Sprache korrekt sein

Analog vorgehen, falls man im Shop z.B. die französische Sprache aktiv hat und auch hier die Monatsnamen/Wochentage auf englisch oder deutsch angezeigt werden.

Dann fehlt wohl die französische locale fr_FR.UTF-8

sudo locale-gen fr_FR.UTF-8
sudo reboot

Nach demselben Prinzip für etwaige andere Sprachen vorgehen.

Hat man keinen root Zugriff auf den Server, dann den Provider kontaktieren, damit der die entsprechenden locales nachinstalliert


Trotz sicherer Fehler werden beim Provider Host Europe keine Error Logs geschrieben?

Wenn im logs Verzeichnis oder einem anderen für die Error Logs definierten Verzeichnis nie Error Logs zu finden sind und der Shop bei Host Europe läuft, sollten im Host Europe KIS die Einstellungen unter Skripte & Datenbanken > Script Einstellungen geprüft werden.

Damit der Shop bei PHP Fehlern und Warnings Logfiles schreiben kann, die zur Fehleranalyse wichtig sind, sollte dort wie folgt eingestellt werden:


Bedeutung von NOTICE, WARNING und ERROR in den Zen Cart Debug Logs

Generell:

Der Beginn des Namens eines Logfiles zeigt, welcher Bereich betroffen ist

zcInstallDEBUG
protokolliert Fehler/Auffälligkeiten bei der Installation oder dem Update

myDEBUG
protokolliert Fehler/Auffälligkeiten im Frontendbereich

myDEBUG-adm
protokolliert Fehler/Auffälligkeiten im Adminbereich

Ist ein Logfile vorhanden wird das seit Zen Cart 1.5.6 im Header der Shopadministration angezeigt.

Unter Konfiguration > Protokollierung/Logfiles kann dieser Hinweis deaktiviert werden, falls er nerven sollte.

Wichtiger Hinweis zu Error Logs unter PHP 8:
Aufgrund des Override Systems für Sprachdateien in Zen Cart 1.5.x ist es unvermeidlich, dass es „doppelte“ Sprachdefinitionen gibt.
PHP 8 wird doppelte Sprachdefinitionen mit einem Logfile quittieren und darauf hinweisen.
Unter Konfiguration > Protokollierung/Logfiles ist daher seit 1.5.7 beim Logfiles Level für Adminbereich und Frontend „IgnoreDups“ voreingestellt.
Das sollte auch so bleiben, die Einstellung Yes führt zu unzähligen, völlig unnötigen Warning Logs.

Nicht jedes Log ist ein Hinweis auf einen wirklich schwerwiegenden Fehler, der die Funktionalität beeinträchtigt.

Es gibt 3 „Schweregrade“ für Fehler, die in den Debug Error Logs protokolliert werden:

ERROR

Hier ist eine Funktionalität wirklich ernsthaft nicht gegeben. Besucher des Shops werden es merken, da weiße Seiten erscheinen.
Oder Sie sehen in der Administration bei der Ausführung einer Aktion eine weiße Seite.
Die Ausführung wird aufgrund eines Fehlers abgebrochen.
Diese Fehler haben höchste Priorität und sollten sofort näher untersucht und behoben werden.

Siehe dazu:
https://www.zen-cart-pro.at/knowledgebase/weisse-seite-an-error-occured-datenbankabfragen-schlagen-fehl/

WARNING

Hier ist keine Funktionalität ernsthaft betroffen. Besucher des Shops werden solche Fehler in der Regel nicht merken.
Diese Fehler haben mittlere Priorität und sollten bei Gelegenheit näher untersucht und behoben werden.
Seit PHP 7.3 können diese Warnings stark zunehmen, wenn weiterhin unsauberer Code, z.B. von alten Modulen oder alten Templates einfach unverändert weiterverwendet wird.
Seit PHP 7.3 wird geprüft, ob bei der Abfrage von Variablen, diese Variablen auch wirklich irgendwo definiert sind.
Das können Konfigurationseinträge in der Datenbank sein oder Definitionen von Sprachkonstanten in den Sprachdateien.
Enthält ein Skript Abfragen solcher Variablen, die weder in der Datenbank noch in den passenden Sprachdateien definiert sind, dann wird ein Log mit z.B. folgender PHP Warning erzeugt:

PHP Warning: Use of undefined constant TEXT_SEARCH_FOR_TRACKING_ID - assumed 'TEXT_SEARCH_FOR_TRACKING_ID' (this will throw an Error in a future version of PHP) in irgendwas/irgendwas

bedeutet:

Es wird in der betroffenen Datei zwar auf TEXT_SEARCH_FOR_TRACKING_ID verwiesen, dafür gibt es aber weder einen Konfigeintrag in der Datenbank noch eine Sprachdefinition.
In PHP 7.3 oder 7.4 wird nur darauf hingewiesen, die Ausführung wird nicht abgebrochen, es ist also keine Funktionalität davon betroffen.
In der nächsten PHP Version wird dieses Problem aber zu einem Error und damit zu einem echten Problem führen, daher sollte das ganze bereits jetzt schnellstmöglich behoben werden.

In diesem Beispiel wurde die aufgerufene Konstante TEXT_SEARCH_FOR_TRACKING_ID nicht in der passenden Sprachdatei hinterlegt.

Weiteres Beispiel:

PHP Warning: Use of undefined constant GADIR - assumed 'GADIR' (this will throw an Error in a future version of PHP) in irgendwas/irgendwas

In diesem Beispiel wurde in einer Datei eine Abfrage nach dem Konfigurationseintrag GADIR gestartet. Diesen Eintrag gibt es aber nicht in der Datenbank, der gemeinte Eintrag war GOOGLE_ANALYTICS_DIR und wurde in der Datei falsch mit GADIR bezeichnet.

Seit PHP 8 führen solch fehlende Sprachdefinitionen oder Konfigurationsdefinitionen zum Abbruch, sie erzeugen dann eine weiße Seite und generieren ein Error-Log.
Wenn Sie Ihren 1.5.7 Shop mit PHP 8 betreiben, dann achten Sie unbedingt darauf, dass Ihre Sprachdefinitionen komplett sind!

NOTICE

Diese Hinweise sind zu 99% völlig harmlos. Eine Funktionalität ist davon nicht betroffen.
Diese Meldungen sind selten, bei der Installation kann z.B. folgendes Log einmalig generiert werden:

PHP Notice: Undefined offset: 1 in /www/htdocs/xxx/www.xxx.com/xxx/zc_install/includes/classes/class.zcDatabaseInstaller.php on line 449

Solche Hinweise können nicht in allen Szenarien abgefangen werden und werden in der Regel nicht wieder auftreten.
Solche einmaligen Logs mit PHP Notice ignorieren und löschen.


Weiße Seite / Diese Seite funktioniert nicht / Datenbankabfragen schlagen fehl

Beim Aufruf einer Seite in Zen Cart erscheint in Firefox eine komplett weiße Seite (blank page).
Oder in Chrome eine Seite mit „Diese Seite funktioniert nicht“ HTTP Error 500:


Oder eine weiße Seite mit dem Text:
An error has occured. Please refresh the page and try again

Oder der Text
FEHLER:
Datenbankabfragen oder Datenbankeinträge schlagen fehl.

Weiße Seiten (Blank Pages) entstehen meistens durch Fehler in Sprachdateien. Beim Ändern wurden Sonderzeichen, Leerzeilen oder fehlende Trennzeichen hinterlassen oder die Datei wurde in einem falschen Format abgespeichert. Oder es fehlen benötigte Dateien.

Unter PHP 8.0x weist eine solche Seite auf einen PHP Fatal Error im Hintergrund hin, wodurch die Verarbeitung der Seite abgebrochen wird.

Erscheint der Text
An error has occured. Please refresh the page and try again
oder
FEHLER: Datenbankabfragen oder Datenbankeinträge schlagen fehl.
dann schlägt eine Datenbankabfrage oder ein Eintrag in der Datenbank fehl.

Um herauszufinden, was genau das Problem verursacht, folgendermaßen vorgehen:

Seit Zen-Cart 1.5.1 ist standardmäßig eine Funktion aktiv, die bei solchen Fehlern Debug Logs im Ordner logs ablegt. (in sehr alten früheren Zen Cart Versionen wurden diese Logs im Ordner cache abgelegt)

Seit Zen Cart 1.5.3 können diese Errorlogs online in der Administration unter Tools > Logfiles angesehen werden.

In älteren Zen Cart Versionen sind sie nur per FTP erreichbar.

Im Ordner logs sollte sich ein Logfile befinden (myDEBUG-xxxxxxx.log). Sollte keins da sein im FTP Programm den Inhalt des Ordners aktualisieren. Möglicherweise liegen dort sehr viele solcher Debug Logs. Daher am besten zunächst die bestehenden Logs löschen und dann nochmal die Seite aufrufen, die die Blank Page erzeugt. Dann den Ordner logs aktualisieren und man weiß genau, welches Logfile man sich genauer ansehen sollte.

Logfile herunterladen und mit einem Texteditor öffnen.

In diesem Log steht bei einer weißen Seite dann wahrscheinlich sowas ähnliches wie das:

[12-Sep-2013 13:40:10] PHP Warning: Cannot modify header information - headers already sent by (output started at /homepages/xxx/xxxxx/htdocs/xxx/zen-cart/includes/languages/german.php:11) in /homepages/xxx/xxxxx/htdocs/xxx/zen-cart/includes/init_includes/init_templates.php on line 28

Relevant ist nur die Datei, die hinter output started at angegeben ist.

In diesem Beispiel ist das die includes/languages/german.php. Die Ziffer 11 gibt die Zeile an, in der sich der Fehler befindet.

Diese Datei mit einem Texteditor öffnen und auf Leerzeilen (hinter dem php am Schluss), Sonderzeichen, seltsame Zeichen am Anfang und sonstige Fehler überprüfen. Nicht nur die angegebene Zeile überprüfen, sondern alles!
In Zen Cart ist es wichtig, dass Sprachdateien immer im Format utf-8 ohne BOM abgespeichert werden.
Der häufigste Fehler ist, dass Sprachdateien (so wie in diesem Beispiel die german.php) mit einem Texteditor bearbeitet werden, der kein utf-8 versteht oder nicht im Format utf-8 ohne BOM speichern kann. Ein deutlicher Hinweis darauf ist z.B.:
output started at /homepages/xxx/xxxxx/htdocs/xxx/zen-cart/includes/languages/german.php:1
Der Fehler befindet sich also in Zeile 1.
Dann wurde ganz klar nicht im Format utf-8 ohne BOM gespeichert.
Empfehlenswerte Texteditoren sind: Notepad++ oder Ultra Edit
Definitiv NICHT geeignet ist das in Windows integrierte Notepad, das kein utf-8 versteht oder gar Microsoft Word. Auch Dreamweaver ist nicht unbedingt das Mittel der Wahl zum Bearbeiten von Sprachdateien in Zen-Cart.

Korrigierte Datei einspielen und überprüfen, ob die Seite jetzt normal angezeigt wird. Falls nicht wieder den Inhalt des logs Ordners aktualisieren, neues Logfile herunterladen und Schritt für Schritt wieder so vorgehen, bis keine Fehler mehr auftreten. Bei fehlerfreiem Betrieb werden keine neuen Error-Logs zu finden sein.

Bei der Meldung An error has occured. Please refresh the page and try again oder FEHLER: Datenbankabfragen oder Datenbankeinträge schlagen fehl. liegt der Grund nicht in fehlerhaften Sprachdateien, sondern an fehlgeschlagenen Datenbankabfragen oder Datenbankeinträgen.

Auch hier gibt das Logfile Aufschluss und könnte z.B. einen Eintrag in dieser Art enthalten:
Code:

[08-Nov-2014 08:42:53 UTC] PHP Fatal error:  1062:Duplicate entry 'ZEN_LIGHTBOX_STATUS' for key ....

Hier wurde versucht bei einer Modulinstallation einen bereits bestehenden Datenbankeintrag nochmals anzulegen.

Beim Auftreten einer weißen Seite oder von An error has occured. Please refresh the page and try again wird immer ein Errorlog geschrieben!

Woran kann es liegen, wenn trotzdem kein solches Errorlog zu finden ist?

– Der Ordner logs muss vom Webserver beschreibbar sein (chmod 777). Berechtigungen dieses Ordners überprüfen

– Die Funktionalität des Erzeugens der Logs wird von den Dateien includes/extra_configures/enable_error_logging.php (für Logfiles bei Problemen im Frontend) und DEINADMIN/includes/extra_configures/enable_error_logging.php (für Logfiles bei Problemen im Backend) zur Verfügung gestellt. Überprüfen, ob diese beiden Dateien vorhanden sind

– Es muss für die Logfiles nicht unbedingt der Ordner logs im Shopverzeichnis verwendet werden. Es ist sogar anzuraten diesen Ordner auf eine Ebene über den öffentlich erreichbaren htdocs oder www verzeichnis zu legen, damit der Inhalt keinesfalls öffentlich erreichbar ist (siehe Wichtige Sicherheitsempfehlungen).
Der Ordner für die Logfiles ist definiert in der includes/configure.php (für das Frontend) und DEINADMIN/includes/configure.php (für das Backend) mit jeweils folgendem Eintrag:
Code:

define('DIR_FS_LOGS', '/var/www/xxx/logs');

Hier also überprüfen welcher Pfad wirklich für die Logfiles verwendet wird.
Dieser Eintrag kann auch auskommentiert sein, wird das Logfile Verzeichnis nicht explizit angegeben, wird standardmäßig seit Zen Cart 1.5.6 der Ordner /logs verwendet.


Ich habe mein Passwort für den Adminbereich vergessen. Was tun?

Zunächst sollten Sie auf der Admin Loginseite die Funktion „Passwort vergessen“ nutzen. Tragen Sie dort Ihre Emailadresse ein, die Sie damals für den Admin verwendet haben und lassen Sie sich ein neues Passwort zusenden. Wenn Sie auch Ihre Emailadresse vergessen haben oder das Passwort zusenden nicht funktioniert, gehen Sie wie folgt vor:

1)
Rufen Sie phpMyAdmin auf. Das ist ein Tool zum direkten Zugriff auf die Datenbank und steht normalerweise im Administrationsbereich Ihres Webhosters zur Verfügung.

2)
Wählen Sie die Datenbank aus, die für Ihren Zen-Cart Shop verwendet wird und wählen Sie dort den Reiter SQL. Es erscheint ein Eingabefeld, in dem Sie einen SQL Befehl eingeben können.

3)
Kopieren Sie nun folgenden Befehl ins Eingabefeld und bestätigen mit Absenden:

Code:
DELETE FROM admin WHERE admin_name = 'Admin'; 
INSERT INTO admin (admin_name, admin_email, admin_pass, admin_profile) 
VALUES ('Admin', 'admin@localhost', '351683ea4e19efe34874b501fdbf9792:9b', 1);

Hinweis:
Falls Ihre Datenbanktabellen ein Präfix verwenden (z.B. zen_), dann ändern Sie vorher den Befehl entsprechend ab, also z.B.

Code:
DELETE FROM zen_admin WHERE admin_name = 'Admin'; 
INSERT INTO zen_admin (admin_name, admin_email, admin_pass, admin_profile) 
VALUES ('Admin', 'admin@localhost', '351683ea4e19efe34874b501fdbf9792:9b', 1);

4)
Durch diesen Befehl wurde ein neuer Adminaccount angelegt und Sie können sich nun mit folgenden Zugangsdaten einloggen:

Username: Admin
Passwort: admin

Achten Sie auf die Gross- und Kleinschreibung! Der Benutzername beginnt mit einem großen A, das Passwort mit einem kleinen a

5)
Sie werden nun sofort aufgefordert, das Passwort zu ändern.

6)
Nun, da Sie wieder Zugriff haben, legen Sie sofort einen neuen Adminaccount an mit Namen und Passwort Ihrer Wahl.
Das machen Sie unter Admin Benutzerrechte > Admin Benutzer > add user
Sobald Sie den neuen Account angelegt haben, loggen Sie sich mit diesem ein und löschen sofort den Übergangsaccount des Users Admin

Seite 1 von 1
generiert von https://www.zen-cart-pro.at/themen/logfiles-und-troubleshooting/ am 24. April 2026