PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Weisse Seite oder An error has occured. Please refresh the page and try again?



webchills
29.04.2012, 17:55
Beim Aufruf einer Seite in Zen Cart erscheint eine komplett weiße Seite (blank page) oder eine weiße Seite mit dem Text: An error has occured. Please refresh the page and try again

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.

Erscheint der Text An error has occured. Please refresh the page and try again, 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 früheren Zen Cart Versionen wurden diese Logs im Ordner cache abgelegt)

In 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++ (http://notepad-plus-plus.org/) oder Ultra Edit (http://ultraedit.de/)
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 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:

[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. 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:

define('DIR_FS_LOGS', '/var/www/xxx/logs');
Hier also überprüfen welcher Pfad wirklich für die Logfiles verwendet wird.
Sollte der Eintrag DIR_FS_LOGS nicht vorhanden sein, dann wird für die Logfiles der bei DIR_FS_SQL_CACHE eingetragene Pfad verwendet.

Was soll ich tun, wenn ich die Einträge in den Errorlogs nicht verstehe?

Poste das Problem im Forum und beschreibe genau, auf welcher Seite oder nach welcher Aktion die weiße Seite erscheint. Poste dazu den Inhalt des Logfiles, das bei diesem Anlass erstellt wurde.
Ohne das Logfile ist Dein Posting sinnlos! Es macht keinerlei Sinn Beiträge zu erstellen, deren einziger Inhalt ist: Hilfe ich bekomme eine weiße Seite oder Hilfe, da steht An Error Occurred...
Niemand kann mit solch allgemeinen Fehlermeldungen etwas anfangen und Dein Posting wird ignoriert werden.

Worauf muss ich achten, wenn ich im Forum den Inhalt eines Logfiles poste?

Poste den Inhalt zwischen den CODE Schaltflächenund kopiere nicht einfach den vollständigen Text normal hinein. Es ist für alle Beteiligten wesentlich besser lesbar, wenn der Inhalt als Code gepostet wird.

Poste NIEMALS vollständige echte Pfade, die im Errorlog angegeben sind. Wenn der vollständige Pfad zur betroffenen Datei z.B. im Logfile lautet /homepages/56/u9455553/www.domain.de/includes/languages/german.php
dann ersetze die heiklen Angaben mit xxx und poste sie als /xxx/xx/xxx/www.xxx.de/includes/languages/german.php