HeaderName und PHP-Script
Tom
- webserver
0 Edgar Ehritt0 Tom0 Edgar Ehritt0 Tom
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
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
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
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
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