Lektion 1.3: Debug-Ausgabe und Logs
Eine Live-Website verbirgt ihre Fehler. Eine Entwicklungsinstallation muss sie zeigen. In dieser Lektion schalten die
Teilnehmenden die Debug-Ausgabe mit exp:ini ein, lesen den Bericht, den die Exp Debug bar unter jeder Seite zeigt,
verfolgen die Logdateien, während sie neu laden, und schreiben eigene Debug-Zeilen aus PHP und aus einem Template.
Auf einen Blick
| Kurs | Entwickler |
| Modul | Modul 1: Die Entwicklungsinstallation |
| Dauer | 45 Minuten (15 Präsentation, 30 Übung) |
| Niveau | Einsteiger |
| Zielgruppe | PHP-Entwickler, die neu bei Exponential sind |
| Voraussetzungen | Lektion 1.2: eine laufende Entwicklungsinstallation |
Lernziele
Nach dieser Lektion können die Teilnehmenden:
- die Debug-Ausgabe, die verwendeten Templates und die Template-Pfadkommentare mit
exp:iniein- und ausschalten; - die Teile Fehler, Templates, Zeitmessung und SQL des Debug-Berichts lesen;
var/log/error.logmittailoderexp:logsverfolgen, während sie ein Problem nachstellen;- Debug-Zeilen mit
eZDebugund eine eigene Logdatei miteZLog::write()schreiben; - die Debug-Ausgabe auf einem gemeinsam genutzten Rechner auf die eigene Adresse oder den eigenen Benutzer beschränken.
Hinweise für Trainer
So präsentieren Sie es
Quellen: Debug-Ausgabe und Logs für Entwickler, Die Exp Debug bar und Der Log-Viewer.
Die Einstellungen (4 Minuten). Alle in
site.ini; zeigen Sie die Standardwerte:Block Einstellung Standard Bedeutung [DebugSettings]DebugOutputdisabledDen Debug-Bericht überhaupt anzeigen [DebugSettings]DebugByIP+DebugIPList[]disabledNur für diese Adressen [DebugSettings]DebugByUser+DebugUserIDList[]disabledNur für diese Benutzer-IDs [TemplateSettings]ShowUsedTemplatesdisabledJedes Template auflisten, das die Seite verwendet hat [TemplateSettings]ShowTemplatePathCommentsdisabledHTML-Kommentare, die das Template jedes Teils nennen [TemplateSettings]TemplateCompileenabledCache der kompilierten Templates [DatabaseSettings]SQLOutputdisabledJede SQL-Abfrage mit ihrer Dauer Einschalten (3 Minuten). Zeigen Sie die Befehle
exp:ini setaus der Übung und die Option--dry-run.exp:inischreibtsettings/override/site.ini.append.phpund legt eine Sicherung an.Der Bericht (4 Minuten). Laden Sie eine Seite neu: zuerst die Fehler, dann die Template-Tabelle (angefordertes Template, verwendetes Template, Override), Zeitmesspunkte, SQL. Eine Abfrage, die hundertmal läuft, ist eine Schleife, die einmal holen sollte.
Logs (2 Minuten).
var/log/error.logerhält immer die Fehler ([DebugSettings] AlwaysLog[]=error).deprecated.logist die Aufgabenliste für die nächste PHP-Version. Setup > Logdateien zeigt dieselben Dateien im Browser.Eigene Zeilen (2 Minuten).
eZDebug::writeDebug(),writeNotice(),writeWarning(),writeError(), mit__METHOD__als Kennzeichnung;{debug-log var=$node msg='...'}in einem Template.
Häufige Fragen
Können Besucher die Debug-Ausgabe sehen? Ja, alle, die die Seite öffnen können, solange DebugByIP oder
DebugByUser sie nicht einschränkt. Die Debug-Ausgabe verrät Pfade, SQL und Einstellungen: niemals auf einer
Live-Website.
Warum erscheint meine Template-Änderung nicht? Mit TemplateCompile=enabled wird die kompilierte Fassung
verwendet, bis der Template-Cache geleert wird. Entwickler setzen beim Bearbeiten oft TemplateCompile=disabled.
Wo ist das Log eines Kommandozeilenskripts? In denselben Dateien unter var/log/; [DebugSettings] ScriptDebugOutput fügt Skripten die Debug-Ausgabe hinzu.
Stolperfallen
- Vergessen, den INI-Cache zu leeren. Führen Sie nach einer Änderung der Einstellungen
php bin/php/ezcache.php --clear-tag=iniaus; sonst werden die alten Werte verwendet. - Im Code vergessene Debug-Zeilen. Bitten Sie die Teilnehmenden, jedes
writeDebug()zu entfernen, bevor sie committen. - Personenbezogene Daten in Logs. Schreiben Sie niemals Passwörter, Schlüssel oder personenbezogene Daten in eine Logdatei.
Praktische Übung
Auf der Entwicklungsinstallation aus Lektion 1.2, aus ihrem Wurzelverzeichnis.
Sehen Sie nach, woher die Einstellung kommt:
php bin/php/console exp:ini where site.ini/DebugSettings/DebugOutput.Sehen Sie sich die Änderung vorab an:
php bin/php/console exp:ini set site.ini/DebugSettings/DebugOutput enabled global --dry-run.Schalten Sie die drei Einstellungen ein:
php bin/php/console exp:ini set site.ini/DebugSettings/DebugOutput enabled global php bin/php/console exp:ini set site.ini/TemplateSettings/ShowUsedTemplates enabled global php bin/php/console exp:ini set site.ini/TemplateSettings/ShowTemplatePathComments enabled global php bin/php/ezcache.php --clear-tag=ini php bin/php/ezcache.php --clear-tag=templateLaden Sie die Startseite der Website neu. Öffnen Sie die Debug-Leiste und suchen Sie die Liste der verwendeten Templates.
Sehen Sie sich den Quelltext der Seite an und suchen Sie nach
START. Schreiben Sie das Template der Fußzeile auf.Verfolgen Sie in einem zweiten Terminal das Fehlerlog:
tail -f var/log/error.log.Öffnen Sie eine Adresse, die es nicht gibt, zum Beispiel
/site/content/view/full/999999, und beobachten Sie sowohl die Seite als auch das Terminal.Listen Sie die Logdateien auf, die der Viewer öffnen darf:
php bin/php/console exp:logs --list.Zeigen Sie die letzten fünf Einträge des Fehlerlogs über den Viewer an:
php bin/php/console exp:logs --tail=var/log/error.log --lines=5.Schalten Sie
ShowTemplatePathCommentsmit demselben Befehl unddisabledwieder aus und leeren Sie den Template-Cache.
Erwartetes Ergebnis
- Schritt 1 listet
settings/site.inimitDebugOutput=disabledund nach Schritt 3 einen wirksamen Override mitenabled. - Schritt 4: Die Debug-Leiste erscheint unten auf jeder Seite, ihre Template-Liste nennt
pagelayout.tplund die Templates der Knotenansicht. - Schritt 5: Kommentare wie
<!-- START design/.../footer.tpl -->im Quelltext. - Schritt 7: die Seite „nicht gefunden“; je nach Einstellungen erhält
404.logodererror.logeine Zeile. - Der Trainer prüft die Ausgabe von
exp:ini wherebei zwei Teilnehmenden.
Quiz
- Welche Einstellung zeigt den Debug-Bericht unter jeder Seite?
A.
[TemplateSettings] DebugB.[DebugSettings] DebugOutputC.[DatabaseSettings] SQLOutputD.[DebugSettings] AlwaysLog[] - Welche zwei Einstellungen beschränken die Debug-Ausgabe auf bestimmte Personen?
- Was sollte auf jede Änderung der Einstellungen mit
exp:ini setfolgen? - Welche Methode von
eZDebugschreibt auch ohne Debug-Ausgabe inerror.log? - Richtig oder falsch: Template-Pfadkommentare können für einen Feed oder einen Live-Siteaccess bedenkenlos eingeschaltet bleiben.
Antworten
- B.
DebugOutput=enabledzeigt den Bericht, die Exp Debug bar. DebugByIPmitDebugIPList[]undDebugByUsermitDebugUserIDList[].- Das Leeren des INI-Caches,
php bin/php/ezcache.php --clear-tag=ini. eZDebug::writeError(): Fehler werden immer geloggt (AlwaysLog[]=error).- Falsch. Sie fügen jedem Template Markup hinzu; nur für die Entwicklung (Template-Pfadkommentare).
Weiterführende Literatur
- Debug-Ausgabe und Logs für Entwickler: jede Einstellung und jede Logdatei.
- Die Exp Debug bar: ihre Tabs und ihr Einstellungs-Tab.
- Der Log-Viewer und Einen Fehler über seine Referenz finden.
Verwandte Seiten
- Modul 1: Die Entwicklungsinstallation
- Entwickler: Kursüberblick
- Trainer: hier beginnen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.