Fehlersuche
Wenn beim Entwickeln einer Anwendung Fehler auftreten, stellt Virthos verschiedene Hilfsmittel zur Verfügung, um die Ursache zu finden.
Logdateien
Wenn Fehler von Virthos abgefangen werden, erfolgt in den meisten Fällen ein Eintrag in die aktuelle Logdatei. Der Logmechanismus wurde in Virthos 3.6 komplett überarbeitet, daher finden Sie im folgenden zwei getrennte Beschreibungen zu seiner Arbeitsweise.
- Logmechanismus bis Virthos 3.5.x
Nur wenn der Konfigurationsparameter
log
auf1
oder2
gesetzt ist, werden Informationen in die Logdatei eingetragen. Die Datei heißt log und liegt im Verzeichnis data. Wenn ihre Größe einen Wert von 500 kB überschreitet, wird sie automatisch geleert und neu angelegt.- Logmechanismus ab Virthos 3.6
Fehler werden in jedem Fall in die Logdatei eingetragen, sonstige Informationen nur, wenn der Konfigurationsparameter
log
auf1
oder2
gesetzt ist. Es wird für jeden Tag eine eigene Logdatei mit dem Namen log-jjjj-mm-tt.php angelegt, wobei jjjj für das aktuelle Jahr, mm für den Monat und tt für den Tag steht. Speicherort der Logdateien ist das Verzeichnis data/log. Mit dem KonfigurationsparameterpathToLog
können Sie bei Bedarf ein anderes Verzeichnis festlegen. Die Logdateien werden standardmäßig 45 Tage aufbewahrt und dann automatisch gelöscht. Mit Hilfe des KonfigurationsparameterskeepLogFile
können Sie bei Bedarf eine größere oder kleinere Zahl von Tagen als Aufbewahrungszeit festlegen.
Wenn Sie den Konfigurationsparameter log
auf 2
statt auf 1
setzen, werden
in Virthos Pro und Master zusätzlich zu den sonst üblichen Meldungen auch
sämtliche SQL-Datenbankabfragen in die Logdatei geschrieben. Dadurch können die
Logdateien recht groß werden, so dass Sie nicht vergessen sollten, diesen
Mechanismus wieder abzuschalten, wenn Sie ihn nicht mehr benötigen.
Das Aktivieren des Logmechanismus hat den Nebeneffekt, dass Fehler- und -Warnmeldungen der PHP-Interpreters am Bildschirm ausgegeben werden. Dies entspricht dem Ausführen von
error_reporting( E_ALL ^ E_NOTICE )
Beachten Sie aber, dass die ausgegebenen Fehler manchmal nicht sofort im Browserfenster sichtbar sind, sondern erst, wenn Sie sich den Quellcode der Seite anzeigen lassen.
Seit Virthos 4.2.1 ist es möglich, PHP-Fehler- und -Warnmeldungen unabhängig
vom Logmechanismus für Abfragen von einer bestimmten IP-Adresse aus zu
aktivieren. Dafür muss die gewünschte IPv4- oder IPv6-Adresse im
Konfigurationsparameter errorReporting
hinterlegt werden. Welches die
richtige Adresse ist, lässt sich durch Aufruf der vtAbout
-Methode
herausfinden. Dort ist die Adresse im HTML-Kopf als Meta-Element hinterlegt.
PHP-Code-Ausgabe
Wenn beim Ausführen einer Methode Fehler auftreten oder nur eine leere Seite
erscheint, bietet Virthos die Möglichkeit, sich den PHP-Code ausgeben zu
lassen, den der Template-Compiler beim Verarbeiten der Methode erzeugt. Fügen
Sie dazu einfach den Parameter -phpsource
mit dem Wert 1
in die URL ein.
Das könnte zum Beispiel so aussehen:
http://www.meinefirma.de/index.php?-pg=100&-met=special&-phpsource=1
Sie können den PHP-Code, den Virthos in diesem Fall ausgibt, in einer Textdatei speichern und dann mit einem PHP-Parser überprüfen lassen. So lassen sich oft Fehler aufspüren, die auf andere Weise nicht zu finden sind.
Übrigens besteht die häufigste Ursache für einen "Parse Error" darin, dass
VirthosTalk-Konstrukte falsch verschachtelt sind oder die vtEnd
-Anweisung zu
einer Blockanweisung fehlt bzw. aufgrund eines Tippfehlers nicht korrekt
angewendet wird.
Hilfreiche Funktionen
VirthosTalk stellt verschiedene Funktionen zur Verfügung, die Sie nutzen können, um logische Fehler in Ihren Methoden aufzuspüren:
Funktion | Beschreibung |
---|---|
vtLog | Schreibt bei eingeschaltetem Logmechanismus eine Meldung in die aktuelle Virthos-Logdatei. |
vtLogError | Schreibt eine Fehlermeldung in die aktuelle Virthos-Logdatei. |
vtDbError | Gibt die Fehlermeldung aus, die bei der letzten vtDbQuery -Anweisung aufgetreten ist. |
vtDbErrorNo | Gibt die Nummer des MySQL-Fehlers aus, der bei der letzten vtDbQuery -Anweisung aufgetreten ist. |