Tom: HeaderName und PHP-Script

Hello,

ich hab' da noch eine kleine Apache-Frage zum Warmwerden...

Um in den automatisch generierten Index-Seiten des Apache einen einheitlichen Header anzuzeigen kann man

HeaderName

setzen. http://httpd.apache.org/docs/2.2/mod/mod_autoindex.html#headername

Nun bekomme ich es aber nicht mehr hin, dass ich ein PHP-Script zum Laufen bekomme, um dann auch wieder automatisch im eingebundenen Kopf noch diverse Angaben zu generieren.

Filename must resolve to a document with a major content type of text/* (e.g., text/html,
     text/plain, etc.). This means that filename may refer to a CGI script if the script's
     actual file type (as opposed to its output) is marked as text/html such as with a directive
     like: [...]

Das deutet doch aber darauf hin, dass es irgendwie gehen sollte.

Kennt sich jemand damit schon genauer aus?

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
  1. Hi Tom,

    Kennt sich jemand damit schon genauer aus?

    nein, aber es funktioniert schlichtweg nicht mit PHP. Mit Perl würde es hingegen funktionieren. Folgende Ausgangssituation in der .htaccess:

      
    #####################################################  
    Options     +indexes  
    HeaderName  /home/eddi/public_html/test/default.index  
      
    AddHandler  cgi-script    .pl .index  
    AddType     text/plain    .index  
    #####################################################
    

    Inhalt der default.index:

    #!/opt/php/5.3.0/bin/php-cgi  
    <?php  
    $a=$_SERVER;  
    $a=$_ENV;  
    unset($a);  
    print_r($GLOBALS);  
    ?>
    

    Das ergibt pro Aufruf einen etwas seltsamen Eintrag in der Apache error_log:

    [Sun Jul 03 23:49:13 2008] [error] [client 127.0.0.1] client denied by server configuration: /home/eddi/public_html/test/.htaccess

    Rufe ich via HTTP default.index ab, bekomme ich hingegen diese Meldung protokolliert:

    <p>This PHP CGI binary was compiled with force-cgi-redirect enabled.
      This means that a page will only be served up if the REDIRECT_STATUS
      CGI variable is set, e.g. via an Apache Action directive.</p>
      <p>For more information as to <i>why</i> this behaviour exists, see
      the <a href="http://php.net/security.cgi-bin">manual page for CGI
      security</a>.</p>
      <p>For more information about changing this behaviour or re-enabling
      this webserver, consult the installation file that came with this
      distribution, or visit <a href="http://php.net/install.windows">the
      manual page</a>.</p>

    Da es mit einem simplen Perl-Script funktioniert, ist das mal wieder PHPs hausgemachter Käse! ;(

    Gruß aus Berlin!
    eddi

    --
    Wenn der Weg zur Hölle mit guten Vorsätzen gepflastert ist, wäre der zum Himmel aus bösen Absichten betoniert. Was aber ist dann ein Weg voller Irrtümer?
    Wer weiß - vielleicht der Mittelweg. ;)
    1. Hello Eddi,

      nein, aber es funktioniert schlichtweg nicht mit PHP. Mit Perl würde es hingegen funktionieren. Folgende Ausgangssituation in der .htaccess:

      Ich vermute, es funktioniert mit dem PHP-CGI und nicht mit dem Modul. Das liegt dann an der Schicht, in der es aufgerufen wird.

      Könnte man nicht für diesen Einsatzzweck PHP CGI zusätzlich benutzen? Ich hab's aber nicht hinbekommen bisher.

      Alternativ könnte ich für die einfachen Dinge, die erscheinen sollen, eventuell auch mit SSI zum Zuge kommen, aber selbst das bekomme ich nicht hin.
      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Re:

        Ich vermute, es funktioniert mit dem PHP-CGI und nicht mit dem Modul. Das liegt dann an der Schicht, in der es aufgerufen wird.

        Ich gehe davon aus, dass Deine Vermutung nicht greifen wird:

        Filename must resolve to a document with a major content
           type of text/* (e.g., text/html, text/plain, etc.). This
           means that filename may refer to a CGI script if the
           script's actual file type (as opposed to its output) is
           marked as text/html such as with a directive like:

        AddType text/html .cgi

        Das Modul wird ja wie folgt aktiviert:

        AddType application/x-httpd-php .php

        Tjo, bleibt nur php_flag xbithack on, jedoch nimmt sich der Apache nichts und protokolliert weiterhin, ich habe keine Berechtigung.

        Könnte man nicht für diesen Einsatzzweck PHP CGI zusätzlich benutzen? Ich hab's aber nicht hinbekommen bisher.

        Wie Du es drehst und wendest. Apache und PHP verstehen einander nicht. So gibt PHP Fehlermeldungen aus, wie im vorhergehenden Post beschrieben, die mal ganz nebenbei bei Version 5.3.0 Humbug sind, weil force-cgi-redirect nicht mehr einkompiliert, sondern mittels php.ini Konfiguriert wird. (Ich sage es ja: Bei den Devs weis die eine Hand nicht, was die andere tut!) Dennoch besteht, laut Fehlermeldung, PHP auf seinen REDIRECT_STATUS als Umgebungsvariable, woran es letztendlich scheitern muss.

        Alternativ könnte ich für die einfachen Dinge, die erscheinen sollen, eventuell auch mit SSI zum Zuge kommen, aber selbst das bekomme ich nicht hin.

        Versuche es. Ich würde die gesamte Logik PHP übertragen und mod_autoindex abschalten.

        Gruß aus Berlin!
        eddi

        --
        Wenn der Weg zur Hölle mit guten Vorsätzen gepflastert ist, wäre der zum Himmel aus bösen Absichten betoniert. Was aber ist dann ein Weg voller Irrtümer?
        Wer weiß - vielleicht der Mittelweg. ;)
        1. Hello,

          Ich würde die gesamte Logik PHP übertragen und mod_autoindex abschalten.

          *puh* Arbeit ruft, schnell weg!

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de