PHP Anwendung debuggen

Hallo,

ich versuche www/webcalendar zu installieren. Leider kann bzw. will ich den Port nicht verwenden. Das liegt daran, dass ich eigentlich keinen extra Datenbankserver sondern SQLlite verwenden will und der Port das nicht unterstützt.

Also hab' ich die Anwendung manuell aus dem Netz geladen und installiert. PHP hab ich via lang/php5 aus den Ports installiert. Als Webserver kommt lighttp zum Einsatz (ebenfalls aus den Ports) wobei PHP als FastCGI eingebunden ist. Das FastCGI PHP Setup funktioniert, denn eine phpinfo() Seite kann ich aufrufen (und da bekomme ich ordentliche Ausgaben).

Leider funktioniert das ganze nicht. Damit meine ich, dass keine bzw. eine leere Seite an den Browser ausgeliefert wird. Das wäre ja nicht so schlimm, wenn man irgendwie an Fehlermeldungen käme. Folgende Einstellungen habe ich in /usr/local/etc/php.ini angepasst:

Code:
error_reporting  =  E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
error_log = /var/log/php.log

Leider sehe ich dennoch keine Fehler, weder im Browser noch in /var/log/php.log. Von der Shell aus kann ich die PHP Skripte aufrufen, allerdings merkt die Anwendung irgendwie, dass ich keinen Browser benutze und verabschiedet sich von selbst.

Wie debuggt man so etwas weiter?
 
lighthttpd nach den Änderungen mal neu gestartet? In die Logs geguckt?
curl -I http://testdomain/testseite.php

Wenn keine errors gemeldet werden deutet das daraufhin, dass das Dingen läuft, aber die Scripte nicht korrekt konfiguriert sind. Wenn in nem Script eine Abbruchbedingung für den Fall einer Fehlkonfiguration ist, die nichts ausgibt, dann klappts nicht.

Ob dein Error reporting grundsätzlich funktioniert, kannst du ja einfach mit nem Fehlerhaften Script testen.

<?PHP

Tralllalla

?>
 
Code:
desktop:~ phs$ curl -kIu user:passwd https://server/calendar/index.php
HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.8
Content-type: text/html
Date: Tue, 27 Jan 2009 20:32:57 GMT
Server: lighttpd/1.4.20

desktop:~ phs$

Ein fehlerhaftes Skript erzeugt auch Fehlerausgaben, d.h. vermutlich bricht dann die dämliche PHP Anwendung einfach ohne Fehler ab. Kann man da nicht irgendwie einen Call Stack ausgeben lassen oder etwas in der Art? Muss doch möglich sein zu sehen, warum bzw. wo der Code abbricht.
 
Zuletzt bearbeitet:
Und? Probiert, ob das Reporting funktioniert?
Das ist ne Weiche:
Wenn Nein: PHP-Konfiguration
else: Script-Konfiguration
 
Und? Probiert, ob das Reporting funktioniert?

Ja, siehe Nachtrag zum vorherigen Eintrag.

Ich habe jetzt die Anwendung nochmals entfernt (rm -rf und so) und neu "installiert" (unzip). Es funktioniert jetzt.

Bleibt die Frage: Kann man PHP irgendwie so einstellen, dass selbst beim Aufruf von abort(3) bzw. dem PHP Äquivalent, d.h. bei einem Abbruch der Anwendung ohne Meldung, ein Call Stack ausgegeben wird?
 
Du könntest im php Code überall wo ein "die" oder sonstige Abbruchsbefehle die Funktion apd_callstack hinzufügen.
Das wäre das Erste, das mir einfällt.

Zusätzlich sind diese Funktionen hier ganz nützlich:
http://de2.php.net/manual/en/ref.apd.php

Du meinst aber generell bei jedem Script sollte unabhängig vom Quellcode der Callstack angeziegt werden oder?

Blah Edit: ich sehe gerade, dass http://www.freshports.org/devel/pear-apd broken ist.

Hier noch ein paar Hinweise wie man mit dem ganz normalen php ohne zusätzliche Module o.Ä. ein paar mehr Informetionen herauskitzeln kann.
http://de2.php.net/manual/en/book.errorfunc.php
 
Zuletzt bearbeitet:
Zurück
Oben