Julian Hofmann: Seltsame Fehlerbehandlung bei Error 404

Hallo,

eigentlich durch Zufall bin ich auf etwas seltsames auf meinen Account bei Schlund gekommen:

Ich provoziere einen 404-Fehler, dieser wird (eigentlich) über die htaccess im Hauptverzeichnis mit einer Datei 404.php abgefangen. Soweit die Theorie.

Test 1: Ich versuche die nicht existente Datei nix.html zu erreichen
=> korrekte Fehlermeldung 404.php

Test 2: Ich versuche die nicht existente Datei nix.php zu erreichen
=> Standard-Fehlermeldung 500 (obwohl eigene 500er-Meldung definiert)

Test 3: Ich versuche die nicht existente Datei nix.php3 zu erreichen
=> "Fatal error: Unable to open /homepages/.../nix.php3 in - on line 0
No input file specified."

Habe beim besten Willen keine Ahnung, warum der ansich selbe Fehler unterschiedlich behandelt wird. V.a. ist es mir auch ein Rätsel, warum sich Test 2 und 3 unterschieden (php3 wird zwar von PHP3, php von PHP4 interpretiert, sollte aber ja nichts weiter ausmachen).

Was ist da los bzw. falsch?

Grüße aus Würzburg
Julian

  1. Hallo,

    hallo

    Test 1: Ich versuche die nicht existente Datei nix.html zu erreichen
    => korrekte Fehlermeldung 404.php

    schön :)

    Test 2: Ich versuche die nicht existente Datei nix.php zu erreichen
    => Standard-Fehlermeldung 500 (obwohl eigene 500er-Meldung definiert)

    Sicher, daß Du beim definieren deiner eigenen 500er-Meldung alles richtig gemacht hast? .. sieht nämlich nicht danach aus.

    Test 3: Ich versuche die nicht existente Datei nix.php3 zu erreichen
    => "Fatal error: Unable to open /homepages/.../nix.php3 in - on line 0
    No input file specified."

    keit HTTP-Fehler sondern eine Fehlermedlung von PHP, allso vollkommen korrekt.

    Habe beim besten Willen keine Ahnung, warum der ansich selbe Fehler unterschiedlich behandelt wird.

    Das sind drei paar Stiefel.

    K@rl

    1. Hallo K@rl,

      Das sind drei paar Stiefel.

      Wie? Eine nicht gefundene PHP-Datei nd eine nicht gefundene PHP-Datei werden ganz normal verschieden behandelt? Nene, zumindest das dürfte ja genau der gleiche Stiefel sein.

      Zur 500er Definition: Ist genauso definiert wie der 404er, der ja bei nix.html auch wunderbar seinen Dienst tut.

      Grüße aus Würzburg
      Julian

      1. Hi Julian,

        Wie? Eine nicht gefundene PHP-Datei nd eine nicht gefundene PHP-Datei
        werden ganz normal verschieden behandelt? Nene, zumindest das dürfte
        ja genau der gleiche Stiefel sein.

        Es _sollte_ dasselbe sein, ja.
        In beiden Fällen _sollte_ der PHP-Interpreter das tun, was der Webserver auch tun würde, nämlich den HTTP-Status 404 setzen und fertig.

        Die Tatsache, daß der eine der beiden PHP-Interpreter sich allerdings "einmischt" und selbst eine Fehlermeldung erzeugt (also glaubt, es "besser zu wissen", im besten M$-Stil ...), und der andere glaubt, die fehlende Datei als "internen Server-Fehler" behandeln zu müssen (mit der Begründung: "Ich bin eine Systemkomponente, und mir fehlt eine notwendige Ressource"), sorgt dafür, daß es eben doch drei verschiedene Fälle werden - mit allen naheliegenden Nachteilen für Dich, der Du diese Fällen behandeln willst.
        Wobei der Error500 ja wenigstens noch unter Deiner Kontrolle steht (sofern Dein error500-Handler korrekt installiert ist), während die PHP-eigene Meldung (womöglich auch noch mit Status-Code 200?) Dir die Möglichkeit zur Behandlung völlig aus der Hand nimmt.

        So jedenfalls sieht es für mich (der ich kein PHP kann) aus ...

        Viele Grüße
              Michael