Troubleshooting für Magento Extensions

Magento ist ein komplexes System, in dem viele verschiedene Fehler auftreten können. Sollten Sie nicht mehr weiter kommen, ziehen Sie mich gerne als Experten hinzu.

Auf dieser Seite möchte ich einige Möglichkeiten aufzeigen, was geprüft werden kann, wenn Fehler in Magento oder nach der Installation von Magento Extensions auftreten.
Außerdem zeige ich einige häufige Fehler, die sehr oft im Support bei meinen Kunden vorkommen.

Magento zeigt nach der Extension-Installation eine weiße Seite ("Blank Page")

Symptom: Beim Ausführen einer bestimmten Aktion zeigt Magento nur eine weiße Seite ohne Inhalt.

Dies ist i.d.R. der Fall, wenn ein sog. "Fatal PHP-Error" aufgetreten ist.
Bitte sehen Sie zur Fehleranalyse in den PHP-/Webserver-Log-Dateien nach (z.B. unter /var/log/apache/.., ggfs. bei Ihrem Hoster erkundigen) und/oder im Magento Fehler-Log im Verzeichnis var/log.

Sofern es sich um eine lokale (Test-)Installation handelt, hilft auch ein Setzen der folgenden PHP-Settings in der Konfigurationsdatei php.ini:

error_reporting = E_ALL;
display_errors = On;

Alternativ im PHP-Code analog:

error_reporting(E_ALL);
ini_set('display_errors', 1);

Sollten Sie Hilfe bei der Auswertung des Fehlers benötigen, kontaktieren Sie mich bitte mit der Fehlermeldung und den exakten Schritten zur Reproduktion des Fehlers.

Cyrillic characters are displayed as "?" on the Magento PDF invoice. What can I do?

The problem is that the chosen font family does not support the Cyrillic characters. So far no font with Cyrillic support is included into the Advanced Invoice Layout Extension. That means that you have to get your own font family with support for Cyrillic characters and include it into the Advanced Invoice Layout Extension.

Please also see my FAQ article about adding a new font.

Erweitertes Logging der Magento Extension aktivieren

Alle meine vianetz Magento Extensions bieten die Möglichkeit, über eine Konfiguration ein erweitertes Fehlerlogging zu aktivieren. Dies benötigen wir ggfs. für komplexere Supportanfragen oder es kann Ihnen zum Nachvollziehen von bestimmten Verhaltensweisen dienen.

Um das erweiterte Logging zu aktivieren, sind folgende Schritte notwendig (erklärt am Beispiel unserer Advanced Invoice Layout-Extension; dies gilt für alle Extensions analog):

  • Aktivieren Sie das Magento system.log unter System › Konfiguration › Entwickleroptionen › Log Einstellungen › Aktiviert: ja
  • Führen Sie die entsprechende Aktion aus, die den Fehler verursacht (z.B. Druck einer PDF-Rechnung, Aufrufen des Crons, etc.)
  • Anschließend wird in dem Ordner var/log/ der Magento-Installation eine Datei mit dem Namen des Moduls geschrieben, in diesem Fall vianetz_advancedinvoicelayout.log

In dieser Datei stehen nun alle relevanten Informationen zur Verfügung.

Fehler: PDF-Dokumente können nicht erstellt werden, wenn das Feature PDF-Briefpapier verwendet wird

Symptom: Bei Verwendung eines eigenen PDF-Briefpapiers lässt sich die PDF-Rechnung nicht drucken und es erscheinen z.T. Fehlermeldungen wie "Cross-reference streams are not supported yet" oder "This document probably uses a compression technique which is not supported by the free parser shipped with FPDI".

Lösung:
Versuchen Sie das PDF-Briefpapier unter anderen Optionen abzuspeichern, insbesondere sollte das PDF als PDF/A für Acrobat 1.4 und Acrobat 5 abgespeichert werden.

Fehlermeldung "Fatal error: Access level to FPDI::_putformxobjects() must be public.."

Ausgangssituation
Im Shop sind meine Advanced Invoice Layout Extension sowie die DHL_Intraship-Extension installiert.
Bei Druck der Labels oder PDF-Rechnungen erscheint folgende Fehlermeldung:
Fatal error: Access level to FPDI::_putformxobjects() must be public (as in class FPDF_TPL) in ..../lib/SetasignFpdi/fpdi.php on line 695

Lösung
Aufgrund der unterschiedlichen FPDI-Library-Versionen sind Anpassungen an folgenden Dateien notwendig (vielen Dank an Tobias Bungers für die Lösung):

  • app/code/community/Dhl/Intraship/Helper/Pdf.php (line 65)
  • app/code/community/Dhl/Intraship/Helper/Pdf/Document.php (line 100)
Bitte kontaktieren Sie mich, falls Sie die Patches benötigen.

Fehlermeldung "Fatal error: Declaration of Zend_Pdf_FileParserDataSource_File .."
Symptom: Beim Ausdruck eines PDF-Dokuments in Magento erscheint die Fehlermeldung
Fatal error: Declaration of Zend_Pdf_FileParserDataSource_File::__construct() must be compatible with Zend_Pdf_FileParserDataSource::__construct()
Lösung:

Die Ursache ist eine Inkompatibilität des Zend Frameworks < 1.11.12 und PHP 5.4. Magento verwendet in der Version 1.8.1.0 das Zend Framework 1.11, daher tritt das Problem hier auf (siehe hierzu auch mein Blog-Eintrag).
Magento bietet einen Patch, der dieses Problem behebt.

Eine mögliche alternative Lösung ist auf StackOverflow beschrieben:
"Fixed it by change in this function lib/Zend/Pdf/FileParserDataSource.php. change

abstract public function __construct();
to
abstract public function __construct($filePath);

Fehlermeldung "Mage registry key already exists" z.B. nach Installation einer Extension
Siehe hier.
I cannot login to the Magento Admin - what can I do?

Sometimes you have the problem that you cannot login to the Magento Admin area - despite entering the correct username and password. There are several points that you can check in this case (it is most probably an issue with the cookies):

  • Check the cookie domain in the core_config_data table that it matches your backend domain
  • Also check that if you previously switched from HTTPS to HTTP that you drop all browser cookies, as if the adminhtml cookie already exists with the "Secure" flag, it cannot be overwritten
Ich erhalte nach der Extension-Installation einen 404-Fehler in der Konfiguration
Symptom: Es wird ein 404-Fehler angezeigt, wenn unter System › Konfiguration z.B. der Menüpunkt Advanced Invoice Layout gewählt wird.

Um diesen Fehler zu beheben, bitte im Backend ab- und wieder anmelden. Dann sollte sich der Bereich problemlos aufrufen lassen.
Was bedeutet der Fehler "There has been an error processing your request"?

Die Fehlermeldung "There has been an error processing your request" ist eine der häufigsten Fehlermeldungen in Magento 1 und Magento 2. Diese Meldung wird allgemein angezeigt, wenn Fehler irgendeiner Art in Magento aufgetreten sind.

In diesem Fall legt Magento unter der in der Fehlermeldung genannten Nummer eine Datei im Verzeichnis var/report an, die weitere Informationen zu dem Fehler enthält.

Im folgenden Screenshot sehen Sie ein Beispiel für einen Fehler:

Magento: There has been an error processing your request

Anschließend prüfen wir den Inhalt der Datei var/report/var/report/71f20cdad8ceb5efde802084ba1eec158275937c822322eee3b1eac5ebde00b0 in unserem Magento Hauptverzeichnis auf den beispielhaften Fehler:

{
  "0": "test",
  "1": "#1 Composer\\Autoload\\includeFile('\/home\/vianetz\/ma...') called at [vendor\/composer\/ClassLoader.php:322]\n#2 Composer\\Autoload\\ClassLoader->loadClass('Magento\\Framewor...')\n#3 spl_autoload_call('Magento\\Framewor...')\n#4 is_subclass_of('Magento\\Framewor...', '\\Magento\\Framewo...') called at [vendor\/magento\/framework\/ObjectManager\/InterceptableValidator.php:42]\n#5 Magento\\Framework\\ObjectManager\\InterceptableValidator->isInterceptable('Magento\\Framewor...') called at [vendor\/magento\/framework\/ObjectManager\/InterceptableValidator.php:16]\n#6 Magento\\Framework\\ObjectManager\\InterceptableValidator->validate('Magento\\Framewor...') called at [vendor\/magento\/framework\/Interception\/ObjectManager\/Config\/Developer.php:62]\n#7 Magento\\Framework\\Interception\\ObjectManager\\Config\\Developer->getInstanceType('Magento\\Framewor...') called at [vendor\/magento\/framework\/ObjectManager\/Factory\/Dynamic\/Developer.php:47]\n#8 Magento\\Framework\\ObjectManager\\Factory\\Dynamic\\Developer->create('Magento\\Framewor...') called at [vendor\/magento\/framework\/ObjectManager\/ObjectManager.php:70]\n#9 Magento\\Framework\\ObjectManager\\ObjectManager->get('Magento\\Framewor...') called at [vendor\/magento\/framework\/App\/Http.php:115]\n#10 Magento\\Framework\\App\\Http->launch() called at [generated\/code\/Magento\/Framework\/App\/Http\/Interceptor.php:24]\n#11 Magento\\Framework\\App\\Http\\Interceptor->launch() called at [vendor\/magento\/framework\/App\/Bootstrap.php:261]\n#12 Magento\\Framework\\App\\Bootstrap->run(&Magento\\Framework\\App\\Http\\Interceptor#000000006a1e7d590000000079678f99#) called at [index.php:39]\n",
  "url": "\/",
  "script_name": "\/index.php",
  "report_id": "71f20cdad8ceb5efde802084ba1eec158275937c822322eee3b1eac5ebde00b0"
}

Wenn Sie keine Lösung für das Problem finden, senden Sie uns bitte diese Datei zu.

Wie kann ich eine Magento 1 Extension deaktivieren?
Siehe hier.
Wieso werden die PDF-Rechnungen nicht im Dateisystem gespeichert?
Problem: Die PDF-Rechnungen werden nicht wie beschrieben im Dateisystem unter dem Verzeichnis media/invoices abgelegt.

Lösung: Die wahrscheinlichste Ursache sind fehlende Berechtigungen für das genannte Verzeichnis. Bitte prüfen Sie, dass der Webserver-Benutzer (z.B. apache o.ä.) Schreibrechte für das Verzeichnis besitzt.