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 auf 1 oder 2 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 auf 1 oder 2 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 Konfigurationsparameter pathToLog 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 Konfigurationsparameters keepLogFile 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.