Grundlagen zum Debuggen eines Magento-Stores


81

Wie kann ich meinen Magento Store debuggen?

Dies ist eine Frage, die für uns derzeit nicht allzu relevant ist. Wenn es eine Magento SE-Site vor 5 Jahren gegeben hätte, wäre dies wahrscheinlich unsere erste Frage gewesen. Für diejenigen, die sich gerade erst mit Magento beschäftigen oder mit Magento noch nicht vertraut sind, kann die Kenntnis der Grundlagen des Debuggens entscheidend sein, um die Ursache von Problemen auszuschließen. Und obwohl es für uns jetzt irrelevant ist, bereiten wir diese Frage mit einem selbst beantworteten Ansatz vor.

Helfen Sie, meine Website ist down!

  1. Ist mein Design fehlerhaft?
  2. Ist ein Modul eines Drittanbieters fehlerhaft?
  3. Warum kann ich den Fehler nicht sehen?

Jede dieser Fragen kann leicht beantwortet werden, indem ein standardisierter Ansatz zum Debuggen verfolgt wird, den selbst die grundlegendsten Benutzer ausführen können. Durch einen Prozess der Beseitigung der Grundlagen des Debuggens eines Magento-Stores.


5
Verwenden Sie einen guten Debugger und Ihre Intelligenz ...
Sylvain Rayé

4
Ist das eine ernste Frage?
Davidalger

5
Nein, es ist eine absichtlich selbst beantwortete Frage, um den Ball auf dieser BETA ins Rollen zu bringen. Der Stapelaustausch ermöglicht nicht nur selbst beantwortete Fragen, sondern ermutigt ihn aktiv zu blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . @sylvain Diese Frage richtet sich an neue / unerfahrene Benutzer, die beim Starten eines Debugging-Prozesses
helfen möchten

@sonassi Ich habe nicht herabgestimmt und Sie haben Ihre Frage klarer umgestaltet. Wahrscheinlich könnte ich dazu beitragen :) Ich wusste nicht, dass SE nicht nur eine Frage und Antwort ist, gut zu wissen. Über das Hauptthema, die Antwort hier ist nur die Oberfläche der meisten möglichen tieferen Probleme. Deshalb sage ich, benutze einen Debugger und verstehe zuerst, wie der interne Versandprozess von Magento funktioniert. Sie können eine Menge Probleme lösen, wenn Sie es verstanden haben. Das sind meine 5 Cent. So lösen Sie ein Problem mit der Steuerberechnung, den Versandmethoden, der Blockgenerierung oder: Debuggen! Es hilft auch, den internen Prozess zu lernen.
Sylvain Rayé

2
Verstanden. Was ich versucht habe zu helfen, sind die grundlegenderen schwerwiegenden Fehler. Offensichtlich ist der Spielraum für Probleme viel zu groß, als dass eine einzige Lösung eine Antwort geben könnte. Macken / kleine Fehler werden über das Debugging diagnostiziert - bei schwerwiegenden Fehlern ist jedoch ein weniger heikler Ansatz erforderlich, wie im Folgenden beschrieben. Und ja, ich habe die Frage optimiert :)
Ben Lessani - Sonassi

Antworten:


98

Das Debuggen ist eine Kunst, die sich jedoch leicht beherrschen lässt, wenn man einem einfachen Schema folgt.

Folgen Sie jedem Punkt, bis Sie eine Lösung gefunden haben.


Aktivieren Sie PHP-Fehler

Dies ist der Schlüssel zu den meisten Problemen. Aus Sicherheitsgründen oder aus anderen Gründen ist die Anzeige von PHP-Fehlern wahrscheinlich standardmäßig in Ihrer PHP-Konfiguration deaktiviert.

Sie können Fehler durch eine dauerhaftere Lösung oder nur durch eine temporärere Lösung aktivieren.

Permanente Lösung

Für Apache / mod_php Benutzer

In der .htaccessDatei Ihres Dokumentenstamms - legen Sie diese einfach oben ab.

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/var/log/system.log

Für Nginx / FastCGI-Benutzer

In Ihrer Nginx virtualhost-Konfiguration, entweder in der finalen location .php {Anweisung oder in der fastcgi_paramsDatei (falls Sie eine angegeben haben)

fastcgi_param PHP_VALUE  display_startup_errors=on;
fastcgi_param PHP_VALUE  display_errors=on;
fastcgi_param PHP_VALUE  html_errors=on;
fastcgi_param PHP_VALUE  log_errors=on;
fastcgi_param PHP_VALUE  error_log=/home/path/public_html/var/log/system.log;

Temporäre / universelle Lösung

Für jede Plattform

Bearbeiten Sie den Magento-Bootstrap index.phpin Ihrem Dokumentenstamm und kommentieren Sie die folgende Zeile aus:

#ini_set('display_errors', 1);

Aktivieren Sie den Entwicklermodus

Wenn Sie einen Fehler hatten und plötzlich auf die Seite "Fehlerbericht" geklickt haben und eine scheinbar nutzlose Fehlerzeichenfolge erhalten haben, wie 1184257287824- Sie haben ein paar Optionen.

Permanente Lösung

Für Apache / mod_php Benutzer

In Ihrer Dokumentenstammdatei .htaccess- legen Sie dies einfach oben ab.

SetEnv MAGE_IS_DEVELOPER_MODE true

Für Nginx / fastcgi Benutzer

In Ihrer Nginx virtualhost-Konfiguration, entweder in der finalen location .php {Anweisung oder in der fastcgi_paramsDatei (falls Sie eine angegeben haben)

fastcgi_param MAGE_IS_DEVELOPER_MODE true;

Temporäre / universelle Lösung

Bearbeiten Sie den Magento-Bootstrap index.phpin Ihrem Dokumentenstamm und geben Sie entweder die ifAussage immer wahr oder aktivieren Sie sie für Ihre spezifische IP.

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
}

oder

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress') {
  Mage::setIsDeveloperMode(true);
}

Überprüfen Sie Ihre Berechtigungen

Falsche Berechtigungen verursachen eine Fülle von Problemen, von denen viele auf den ersten Blick nicht so einfach zu finden sind.

Zum Beispiel.
Wenn PHP nicht in das ./mediaVerzeichnis schreiben kann und Sie JS Combine aktiviert haben, kann Magento die kombinierte Datei und die zugehörige eindeutige URI für das Medium nicht generieren. Stattdessen finden Sie in Ihrem Browser-Quellcode einen vollständigen Serverpfad zur Mediendatei /home/path/public_html/media/xxx

Andernfalls funktioniert die Site möglicherweise wie gewohnt - und es werden keine kritischen Fehler angezeigt.

Bitte beachten Sie, dass diese Vorgehensweise für dediziertes Hosting sicher ist, jedoch möglicherweise Sicherheitsprobleme beim gemeinsamen Hosting aufwirft, wenn der Apache-Prozess nicht pro Benutzer chrooted wird.

In unserem Beispiel ist der SSH / FTP-Benutzer sonassi, der Apache-Benutzer apacheund die Gruppeapache

Fügen Sie den FTP / SSH-Benutzer der Apache-Gruppe hinzu

Am wichtigsten ist , müssen wir sicherstellen , dass die FTP / SSH Benutzerteil der Apache - Gruppe ist, in unserem Beispiel sein apache( ist aber auch allgemein www-data)

usermod -a -G apache sonassi

Fügen Sie der Gruppe so viele Benutzer hinzu, wie Sie für FTP / SSH haben.

Ursprüngliche Berechtigungen zurücksetzen

Bevor wir beginnen, sollten wir sicherstellen, dass alle Berechtigungen korrekt sind.

chown -R sonassi:apache /home/path/public_html/
find /home/path/public_html/ -type d -exec chmod 775 {} \;
find /home/path/public_html/ -type f -exec chmod 664 {} \;

Änderungen dauerhaft vornehmen

ACLs und Sticky Bits

Mit ACLs in Linux können wir bestimmte Regeln definieren, in unserem Fall, welche Berechtigungsdateien bei der Erstellung erben sollen. Ein Sticky-Bit (später erwähnt) kümmert sich um die Gruppenvererbung, hilft jedoch nicht mit den Berechtigungen, weshalb wir ACLs verwenden.

Beginnen Sie, indem Sie die ACL-Unterstützung auf der aktiven Partition aktivieren. Stellen Sie sicher , dass Ihr Kernel mit ACL-Unterstützung kompiliert wurde .

Ihre Partition kann sein /, /home, /varoder etwas anderes, ersetzen als angemessen.

mount -o remount,acl /home

Wenn die ACLs aktiviert sind, können wir die ACL-Regeln festlegen und Sticky-Bits gruppieren:

setfacl -d -m u::rwx,g::rwx,o::rx /home/path/public_html/
chmod g+s /home/path/public_html/

Aber ich habe keine ACL-Unterstützung

Wenn Ihr Kernel keine ACLs unterstützt, können Sie auch umask(dies ist eine Laufzeiteinstellung für BASH, FTP und PHP) die Standarddateiberechtigungen festlegen. Magento setzt in der Regel umask(0)in index.php, jedoch wäre es in Ihrem Interesse sein , dies zu ändern.

In deinem index.phpWechsel soll die umaskLeitung sein

umask(022);

Stellen Sie dies in Ihrer BASH-Umgebung für SSH entweder in Ihrer .bashrcoder in Ihrer ein.bash_profile

umask 022

Für Ihren FTP-Server müssen Sie die Dokumentation lesen, das Prinzip ist jedoch dasselbe.


Thema auf Standard zurücksetzen

Möglicherweise ist entweder Ihr Thema oder Ihr Paket für dieses Problem verantwortlich. Wenn Sie zu einem Vanille-Magento-Thema zurückkehren, können Sie dies schnell herausfinden.

** Dies ist mit dem Vorbehalt verbunden, dass einige Module von bestimmten Themenfunktionen abhängig sein können *

Anstatt etwas über das Admin-Panel zu ändern, ist es viel einfacher, die fehlerhaften Verzeichnisse nur umzubenennen.

Über SSH

mv ./app/design/frontend/myBrokenTheme{,.tmp}
mv ./skin/frontend/myBrokenTheme{,.tmp}

Oder über Ihren FTP-Client durchlaufen und benennen Sie Ihr Paket in etwas anderes. z.B.myBrokenTheme.tmp

Wenn dies Ihr Problem behebt

Dann müssen Sie etwas genauer untersuchen, welcher Teil der Vorlage problematisch ist. Stellen Sie also Ihr Paket wieder her und versuchen Sie Folgendes, indem Sie zwischen den beiden Tests wechseln.

Im Wesentlichen müssen die Verzeichnisse beim Durchlaufen des Dateibaums nach und nach aktiviert werden, bis die fehlerhafte Datei gefunden wird.

  1. Benennen Sie das Layoutverzeichnis in um .tmp
  2. Benennen Sie das Vorlagenverzeichnis in um .tmp

Wenn sich dann eine Korrektur ergibt, benennen Sie alle Dateien im Layoutverzeichnis in .tmp- um (für die SSH-Benutzer ls | xargs -I {} mv {} {}.tmpoder rename 's/^/.tmp/' *).

Aktivieren Sie dann nach und nach jede Datei 1 für 1, bis sie aufgelöst ist.

Wenn dies Ihr Problem nicht löst

Es besteht die Möglichkeit, dass Ihre base/defaultoder enterprise/defaultVerzeichnisse kontaminiert sind - und am besten durch eine bekannte saubere Version ersetzt werden.

Sie können dies tun, indem Sie einen sauberen Build von Magento herunterladen und Ihre Verzeichnisse nach Bedarf ersetzen. Über SSH können Sie dies tun:

cd /home/path/public_html/
mkdir clean_mage
cd clean_mage
MAGENTO_VERSION=1.7.0.0
wget -O magento.tgz  http://www.magentocommerce.com/downloads/assets/$MAGENTO_VERSION/magento-$MAGENTO_VERSION.tar.gz
tar xvfz magento.tgz
cd /home/path/public_html/app/design/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/design/frontend/base .
cd /home/path/public_html/skin/frontend
mv base{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/skin/frontend/base .

Sie können auch die Gelegenheit nutzen, diffdie beiden Verzeichnisse zu durchsuchen, um Änderungen zu überprüfen.

diff -r base base.tmp

NB. Diese Methode führt während des Vorgangs zu mehr Fehlern, da die Modulabhängigkeit das Vorhandensein bestimmter Dateien vorschreibt. Leider ist es das Gleiche für den Kurs.


Deaktivieren Sie lokale Module

Standardmäßig definiert Magento den PHP-Include-Pfad zum Laden von Klassen in der folgenden Reihenfolge

Local > Community > Core

Wenn sich eine Datei in Local befindet, laden Sie sie und führen Sie keine weiteren Schritte aus.
Wenn sich eine Datei in der Community befindet, laden Sie sie und führen Sie keine weiteren Aktionen aus.
Wenn eine Datei nirgendwo anders zu finden ist, laden Sie sie vom Core.

Anstatt Module über das Magento Admin Panel zu deaktivieren, ist es auch hier praktischer, dies auf Dateiebene zu tun.

Um ein Modul auf die "richtige" Weise zu deaktivieren, müssen Sie normalerweise die entsprechende ./app/etc/modules/MyModule.xmlDatei bearbeiten und festlegen <active>false</active>. Dies verhindert jedoch nicht, dass eine Klasse geladen wird.

Wenn eine andere Klasse eine bestimmte Klasse in einem Modul erweitert (wobei alle Magento-Abhängigkeitsdeklarationen ignoriert werden), wird diese weiterhin geladen - unabhängig davon, ob die Erweiterung deaktiviert ist oder nicht.

Das beste Mittel zum Deaktivieren einer Erweiterung ist das Umbenennen des Verzeichnisses.

Deaktivieren Sie zunächst local

Benennen Sie das Verzeichnis einfach über FTP um oder verwenden Sie den folgenden SSH-Befehl

mv ./app/code/local{,.tmp}

Dann deaktiviere die Community

mv ./app/code/community{,.tmp}

Wenn das Problem von einem der beiden behoben ist

Dann gilt es zu verstehen, aus welchem ​​Modul insbesondere der Fehler stammt. Wie im obigen Beispiel für die Paketdiagnose gilt der gleiche Vorgang.

Stellen Sie also das X-Verzeichnis wieder her und versuchen Sie Folgendes, indem Sie zwischen den beiden testen.

Im Wesentlichen müssen die Verzeichnisse (Module) nach und nach einzeln aktiviert werden, bis der Fehler erneut auftritt

  1. Benennen Sie alle Module im Verzeichnis in um .tmp(für die SSH-Benutzer ls | xargs -I {} mv {} {}.tmpoder rename 's/^/.tmp/' *)
  2. Aktivieren Sie nach und nach jedes Modul einzeln, indem Sie es .tmpaus dem Dateinamen entfernen

Wenn das Problem nicht behoben ist

Dann ist es möglich, dass der Kern selbst kontaminiert ist. Der Hauptkern von Magento PHP besteht aus

./app/code/core
./lib

Benennen Sie diese Verzeichnisse erneut um und kopieren Sie sie in einer sauberen Variante. Vorausgesetzt, Sie haben bereits eine saubere Version von Magento wie oben über SSH heruntergeladen, können Sie dies tun:

cd /home/path/public_html/app/code
mv core{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/app/code/core .

Wenn das Problem weiterhin besteht, ersetzen Sie auch das libVerzeichnis

cd /home/path/public_html
mv lib{,.tmp}
cp -par /home/path/public_html/clean_mage/magento/lib .

Zu diesem Zeitpunkt ist Ihr Magento-Shop nichts anderes als eine Vanille-Installation mit einer geänderten Datenbank.

Einige Modelle sind tatsächlich noch in der Datenbank gespeichert (z. B. Auftragsinkrement). Daher müssen diese Änderungen an dieser Stelle manuell vorgenommen werden. Bisher konnten alle oben genannten Schritte ohne dauerhaften Schaden rückgängig gemacht werden. Wenn wir aber auch eine saubere Magento-Datenbank importieren würden, könnte sich dies als irreversibel erweisen (wenn nicht nur ein Backup wiederhergestellt wird).


Die obige Anleitung soll Sie auf den Weg bringen, einen Fehler zu identifizieren. den resultierenden Fehler nicht zu beheben.

Inhalte stammen bereitwillig von www.sonassi.com/knowledge-base/magento-debug-process und www.sonassi.com/knowledge-base/stop-magento-permissions-errermanently


7
Ich denke, dass die Antwort für einige Magento-Benutzer hilfreich sein kann, aber sie sollte als Community-Wiki-ähnliche Q & A-Frage markiert werden, da das Poster die Frage sofort selbst beantwortet hat.
Matthias Zeis

8
Selbst beantwortete Fragen sind nicht nur zulässig, sondern werden von SE gefördert. blog.stackoverflow.com/2012/05/encyclopedia-stack-exchange . Weitere Benutzer sollten dies tun, um die Entwicklung dieser Beta zu unterstützen, und nicht andere Mitglieder einbeziehen, die sich bemühen, anderen zu helfen und die Website voranzutreiben.
Ben Lessani - Sonassi

Sollte das nicht sein 755und 644Berechtigungen? Oder haben Sie einen besonderen Grund zu empfehlen 775und 664?
Jürgen Thelen

@Jurgen - Für alle unsere Server - Nginx / Apache / PHP wird immer als derselbe Benutzer wie SSH / FTP ausgeführt - sei es auf Shared / Dedicated Hosting. Berechtigungen können also nur rwxfür Eigentümer gelten, da die Gruppe und alle anderen nicht relevant sind. Aber wie bereits erwähnt - nicht jeder konfiguriert seinen Server ordnungsgemäß (tatsächlich nur sehr wenige) - und es besteht die Möglichkeit, dass sich der Apache / Nginx / PHP-Benutzer von dem des SSH / FTP-Benutzers unterscheidet und sich gegenseitig hinzufügt Jede jeweilige Gruppe erlaubt dann jedem, rwxDateien so zu speichern, wie sie können sollten.
Ben Lessani - Sonassi

Wenn Sie die beiden Verzeichnisse nicht über das Terminal unterscheiden möchten, können Sie eine der folgenden GUI-Optionen installieren: askubuntu.com/questions/12473/…
pablofiumara

18

Wie auf Twitter angefordert und auf Meta diskutiert, beginne ich hier ein Debug-Tutorial für Nicht-Entwickler.

Zuerst denke ich (auch wenn Magento versucht, dies zu tun), Magento ist zu komplex für einen Händler ohne Entwickler- / Entwicklungsteam. Aber wenn Sie mutig sind und es versuchen möchten, geben wir hier unser Bestes, um Ihnen zu helfen. Ich denke bei einigen Fragen ist die Grenze zwischen "Wie kann ich das machen?" und "Bitte mach meine Arbeit, ich bin zu dumm, um das zu googeln" ist eine ziemlich feine Linie. Ich verstehe, dass es oft schwierig ist, über Google nachzudenken, weil Sie nicht wissen, wonach Sie googeln, weil Sie die Benennung noch nicht kennen. Sammeln wir also Dinge, die jeder mit einem Magento-Store machen kann, auch wenn er kein Entwickler ist.

Eine sehr gute Antwort, wie man Magento debuggt, wenn man schmutzig werden will, wurde bereits von Sonassi gegeben , aber ich versuche, Dinge hinzuzufügen und zu kopieren, was meiner Meinung nach für Händler gilt.

Haftungsausschluss: Alle in diesem Beitrag erwähnten Verzeichnisse und Dateien beziehen sich auf den Magento-Stammordner, der sich möglicherweise in befindet. /var/wwwJe nach Hosting-Anbieter kann sich Ihr sogenannter Document Root jedoch überall befinden. Fragen Sie Ihren Anbieter, ob Sie Ihr Magento nicht finden !

Entwicklungsmodus

Sie möchten echte Fehler haben, nicht die beschissene Seite "Ein Fehler ist aufgetreten", die Magento normalerweise liefert. http://www.fontis.com.au/blog/magento/custom-magento-error-page

Vielen Dank an fontis.com für dieses Bild.

Die auf der Seite genannten Berichte finden Sie in var/reports/<the_number>

Wenn Sie den Entwicklungsmodus aktivieren, löst Magento einen echten Fehler aus. Durch diese Fehler können insbesondere Anmeldeinformationen wie die für die Datenbank verloren gehen! Denken Sie also nach, bevor Sie es auf Produktionsservern einschalten!

Öffne deine index.phpDatei im Hauptordner von Magento. Abhängig von der Version findest du diese Zeilen um die Zeile 73 herum:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

#ini_set('display_errors', 1);

Um nun den Modus zu aktivieren, müssen Sie diese Zeilen ändern.

Wenn Sie Ihre IP-Adresse kennen (die meisten Leute bekommen alle 24 Stunden eine neue, zumindest in Deutschland), hilft Ihnen Google hier:

Ihre öffentliche IP-Adresse lautet 87.138.100.68

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) 
    || $_SERVER['REMOTE_ADDR'] == 'my.ip.add.ress'
) {
    Mage::setIsDeveloperMode(true);
    ini_set('display_errors', 1);
}

Wenn Sie Ihre IP aus irgendeinem Grund nicht kennen, können Sie Fehler für alle anzeigen.

#if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
  Mage::setIsDeveloperMode(true);
#}
ini_set('display_errors', 1);

Protokollierung

Magento protokolliert viele Dinge in zwei Dateien:

  • var/log/exception.log
  • var/log/system.log

Ausnahmen werden immer protokolliert. Das Systemprotokoll muss im Backend aktiviert sein:

System > Configuration > Developer > Log

Bildbeschreibung hier eingeben

Stellen Sie EnabledJa ein und Sie sehen mehr Fehler und Debug-Meldungen in system.logund inexception.log

Ist es ein Thema Problem?

Sie haben ein eigenes Theme, dieses wird im Backend hier konfiguriert:

System> Konfiguration> Design

Bildbeschreibung hier eingeben

Vielen Dank an kb.magenting.com für das Bild

Hier können Sie das Paket und das Thema konfigurieren. Wenn Sie versuchen möchten, den Fehler im Standarddesign zu reproduzieren, entfernen Sie alles aus den Eingabefeldern. Klicken Sie dann auf Speichern und Sie sehen das Standardmagento-Thema wie im Demo-Shop . Wenn Sie einen Shop vor 1.8 haben, finden Sie einen Screenshot im Magento Community Edition-Benutzerhandbuch

Wenn Sie das Problem im Standarddesign nicht reproduzieren können, ist Ihr Design defekt, wenden Sie sich an den Hersteller des Designs. Wir unterstützen keine Themen von Drittanbietern, insbesondere keine kommerziellen.

Was jetzt?

Sie haben einen echten Fehler gefunden, den man reproduzieren kann, der im Standard-Theme reproduzierbar ist? Gut, bitte öffnen Sie eine Frage, und wir geben unser Bestes, um Ihnen zu helfen.

In der Frage:

  • Beschreiben Sie, was Sie tun
  • Welcher Fehler wird ausgelöst
  • ist irgendetwas in den Protokolldateien?
  • Vielleicht ein Screenshot des Fehlers

5
  1. Zunächst sollten Sie den Entwicklermodus aktivieren
  2. Sie können auch die Anzeige von Fehlern in index.php aktivieren: ini_set ('display_errors', 1);
  3. Kompilieren Sie die xDebug-Erweiterung mit jeder intelligenten IDE (PhpStrom / Eclipse)
  4. Deaktivieren Sie das benutzerdefinierte Modul und das Modul von Drittanbietern
  5. Überprüfen Sie Ihr Ausnahme- und Fehlerprotokoll und beheben Sie die aufgelisteten Fehler im Ausnahmeprotokoll
  6. Überprüfen Sie, ob die Erweiterung curl and mcrypt auf Ihrem Server geladen ist
  7. Überprüfen Sie die angegebenen Ordner- und Dateiberechtigungen -R sonassi: apache / home / path / public_html / find / home / path / public_html / -type d -exec chmod 775 {} \; find / home / path / public_html / -type f -exec chmod 664 {} \;
  8. Aktualisieren Sie die Medien- und var-Verzeichnisberechtigung 0777, falls nicht festgelegt
  9. Starten Sie IDE (phpstrom) und setzen Sie dann die Startpunkte des Debuggers auf index.php 10.Drücken Sie F8 und fahren Sie fort, bis Sie eine Fehlermeldung erhalten

Für die Verwendung der obigen Schritte sollten Sie auf jeden Fall Fehler erhalten.


1
Ich schätze Ihre Antworten, aber anstatt die Frage zu beantworten, die bereits Antworten akzeptiert hat, warum können Sie diese Fragen
dh47

3
@ dh47 Für mich ist das, was Abhishek getan hat, richtig. Ich möchte nur erwähnen, dass die Beantwortung bereits akzeptierter Fragen immer noch relevant und wichtig ist. Tatsächlich fehlt unserer Site (Magento SE) dieser wichtige Aspekt. Es ist wichtig, eine Antwortrate von 2,5 zu haben, um aus der Beta herauszukommen. Derzeit haben wir nur eine Antwortrate von 1,6. Daher sind mehrere Antworten auf dieselbe Frage zu begrüßen. Lassen Sie keine Frage ohne Antwort aufgrund dieser Frage haben eine akzeptierte Antwort. Wenn Sie noch einen Punkt hinzufügen möchten, sollten Sie antworten.
Rajeev K Tomy

-1

Debug-Backtrace

Dies ist die gute Funktion, um den Funktionsaufruf in Magento zu debuggen.

Füge diese Funktion in der Datei includes / config.php hinzu oder erstelle eine neue Datei und füge alle gängigen PHP-Funktionen hinzu.

Funktion back_trace ($ exit = true) {
  $ call_back_methods = '';
  $ call_back_methods. = '';
  $ call_back_methods. = 'SNFunction NameLine NumberFile Name';

  $ counter = 1;
  foreach (debug_backtrace () als $ index => $ data) {
    // if (0 == $ index) continue;

    $ call_back_methods. = ''. $ counter ++. '';
    $ call_back_methods. = ''. $ data ['function']. '';
    $ call_back_methods. = ''. $ data ['line']. '';
    $ call_back_methods. = ''. $ data ['file']. '';
  }

  $ call_back_methods. = '';

  print $ call_back_methods;

  if (true == $ exit) exit;
}

OutPut wird sein

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.