Christoph Schnauß: ErrorDocument 500

hallo Forum,

ich bin dabei, meine individuellen Fehlerseiten zu überarbeiten. Dabei kam ich in aller Naivität zu der Ansicht, daß mir für den 500er (interner Serverfehler) noch ein eigenes Dokument fehlt. Also habe ich eins angelegt. Um die Anzeige zu testen, habe ich auf meinem lokalen Apache (egal, welche Version und auf welchem System) einfach in eine .htaccess etwas hineingeschrieben, was nicht erlaubt ist. Ergebnis: natürlich kriege ich eine 500 gemeldet, aber eigentümlicherweise nicht mein eigens dafür angelegtes Dokument gezeigt.

Die Angabe von Fehlerseiten habe ich nur in .htaccess stehen, und für 404 und 403 funktioniert das ja auch, nur für 500 nicht. Wenn ich aber "ErrorDocument 500 /fehler500.htm" unmittelbar in der httpd.conf vorgebe, funktioniert es prima.

Irgendwo fehlt mir da noch das Verständnis für die Logik, warum es mit dem 500er in der httpd.conf funktioniert, in meiner .htaccess aber nicht. Kann mir mal jemand den Balken aus dem Auge zupfen?

Grüße aus Berlin

Christoph S.

--
Visitenkarte
ss:| zu:) ls:& fo:) va:) sh:| rl:|
  1. Hallo Christoph,

    Irgendwo fehlt mir da noch das Verständnis für die Logik, warum es mit dem 500er in der httpd.conf funktioniert, in meiner .htaccess aber nicht. Kann mir mal jemand den Balken aus dem Auge zupfen?

    Wenn in der .htaccess etwas steht, was einen 500er auslöst, dann ist die gesamte .htaccess nicht gültig -> die dort enthaltene ErrorDocument-Direktive wird gar nicht erst interpretiert.

    Viele Grüße,
    Christian

    1. hallo Christian,

      Wenn in der .htaccess etwas steht, was einen 500er auslöst, dann ist die gesamte .htaccess nicht gültig -> die dort enthaltene ErrorDocument-Direktive wird gar nicht erst interpretiert.

      Aha, danke, klingt logisch. Was aber, wenn der 500er nicht von einer .htaccess, sondern von einem Script ausgelöst wird (ich bin da grade am Herumspielen, bin aber offensichtlich nicht geübt genug, etwas in ein Script zu schreiben, was einen 500er auslösen _muß_), egal, ob PHP oder sonstwas CGI-Gängiges?

      Ähm, es ist verständlich, daß die Nachfrage nach den Server-logs hier nix bringt ;-) Da _soll_ ja ausnahmsweise mal drinstehen, daß es eben einen internen Serverfehler gegeben hat. Und das steht natürlich auch drin. Mehr aber nicht - naja, bis auf den Hinweis, daß ich in der .htaccess was stehen habe, was nicht erlaubt ist. Das wußte ich aber bereits vorher.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo Christoph,

        Aha, danke, klingt logisch. Was aber, wenn der 500er nicht von einer .htaccess, sondern von einem Script ausgelöst wird (ich bin da grade am Herumspielen, bin aber offensichtlich nicht geübt genug, etwas in ein Script zu schreiben, was einen 500er auslösen _muß_), egal, ob PHP oder sonstwas CGI-Gängiges?

        Sollte funktionieren - allerdings dürfte es bei PHP schwierig werden, da PHP selbst eine Menge abfängt, d.h. Du müsstest schon PHP selbst zum Absturz o.ä. bringen (ein Header("HTTP/1.1 500 Internal Server Error") reicht nicht aus, da der ja durchaus gesendet werden darf). Einen 500er provozierst Du wohl am leichtesten, indem Du ein Perl-Script schreibst, das leer ist:

        #!/usr/bin/perl  
        exit;
        

        Dann funktioniert übrigens (hab's getestet) auch das ErrorDocument 500 in der .htaccess.

        Viele Grüße,
        Christian