Hi!
Ich habe während dem entwickeln immer auf error_reporting(E_ALL) gestellt und ja, display_errors is on.
das ist gut, aber damit deckst du nicht alles ab.
Um es mal zu präzisieren: Abgesehen von den schon erwähnten Fehlern, die auftreten, bevor PHP die Chance hat, diese Funktion im Scriptablauf auszuführen, deckt das E_ALL wirklich nicht alles ab. E_STRICT ist davon ausgenommen, jedoch handelt es sich dabei nur um Hinweise, wenn man vorwiegend objektorientierten PHP4-Code nicht richtig nach PHP5 umgeschrieben hat. Das ist also meist nichts Tragisches, was einen da verborgen bleibt.
Leider kriege ich manchmal nur eine weiße Seite. Dann zum Beispiel, wenn ich eine Funktion aufrufe, die es nicht gibt (Tippfehler).
Ja. Dann scheitert der PHP-Parser schon daran, dein Script überhaupt intern zu übersetzen, zu interpretieren. Dann ist die Anweisung error_reporting(...) sch***egal, weil weil sie nie zum Zuge kommt. Dein Script wird nicht einmal gestartet.
Nein. Nicht vorhandene Funktionsaufrufe lassen den Parser nicht scheitern, denn die Funktionsdeklaration kann ja auch erst im Laufe des Betriebes hinzugeladen werden. Es sind vermutlich formale Syntaxfehler, wie vergessene Zeichen. Für die ist übrigens auch nicht display_startup_errors zuständig sondern auch "nur" display_errors.
Wenn display_errors auf off steht, sind davon auch nur die Syntaxfehler des Startscripts betroffen. Alle Syntaxfehler der inkludierten (nebst requireten) Scripte werden wieder angezeigt, wenn vor deren Aufruf das display_errors eingeschaltet wird.
Irgendeine Idee, wie ich die reporten kann? Oder geht das generell nicht?
Setze error_reporting und display_errors direkt über die php.ini, nicht im Script.
Oder die anderen Möglichkeiten wie .htaccess für die Modulvariante oder .user.ini für CGI ab PHP 5.3
Hat einen weiteren Vorteil: Wenn du die Scripte vom Testserver in die endgültige Umgebung kopierst, brauchst du sie nicht nochmal anzufassen.
Man köönte auch vor dem Im-Script-Setzen den Servernamen auswerten. Oder man setzt es nur an einer einzigen aber zentralen Stelle.
Lo!