hallo Christoph,
Selbstverständlich.
Cool!
... mod_perl braucht man nicht unbedingt, wenn man Perl-Scripts ausführen lassen möchte.
Klaro, Ich habe noch nicht damit gearbeitet, aber immer wieder hingeschielt.:-)
Du kennst die zugehörige Doku, die die Liste der Apache-Module darstellt?
Jain, also nicht wirklich, denn als ich mich um die Installierung kümmern mußte, da gab es 2.2 noch lange nicht. Damals begann es erst mit mod_perl und wenn ich Glück habe finde ich auf einem alten Rechner auch noch eine Doku, wo mod_perl unter den Modulen aufgeführt wurde.
Findest du dort irgendwo mod_perl? Wenn nein: warum fehlt es dann?
Keine Ahnung sag du es mir!
Was liest du auf http://perl.apache.org/start/index.html? Was passiert, wenn du mod_perl deinstallierst und trotzdem ein Perl-Script als CGI-Anweisung aufzurufen versuchst?
Na, der externe Interpreter wird "zur Hilfe gerufen"(falls er in der Konfig...) . :-)
Wie geht ein Programm wohl damit um, wenn sein Child-Prozess (und Perl ist ein Child vom Apache) auf stdout ausgibt?
Perl ist nicht zwingend ein "Child" des Apache. Und falls es was auf STDOUT ausgibt, steht das eben da. Fertig.
Nix da! So einfach geht das nicht.
Aus der Doku 2.0 Apache:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}<br>";
}
Theoretisch nach deiner Auffassung müßte auf der Konsole des Rechners(stdout), wo der Apache läuft die Umgebungsvariablen des Perlscriptes ausgegeben werden.
Richtig?
Tatsache aber ist, das die Ausgabe letzten Endes im Browserfenster des Client-Rechners dargestellt wird. Das kann eigentlich nur passieren, wenn das Programm, das den Interpreter aufruft den Standard output "abfängt" und an den Client-Rechner überträgt wie auch immer.
Aus einem posting früher:
Er kann aber aufgrund einer Anfrage vergleichen, ob in seiner Konfiguration vorgesehen ist, welcher "Partner" (beispielsweise Perl) ein Script ausführen dürfte, und dem dann das Script zur gefälligen Abarbeitung übergeben.
Und dieses übergeben hat nichts mit STDIN oder Query_string im Environment zu tun?
Apache unterscheidet sehr wohl was es mit den Daten macht, die möglicherweise eine Clientanforderung begleiten. siehe ebenfalls
http://httpd.apache.org/docs/2.0/de/howto/cgi.html#troubleshoot und dort an der Stelle STDIN/STDOUT
Leider finde ich da nicht den Rückweg, sondern nur den Hinweg zum Script beschrieben,
Wenn ich HTML ausgebe mit einem Perlscript, dann gebe ich zuerst den Header per print und dann die html-daten per print aus und print gibt nun mal auf stdout aus
Womit möglicherweise dein Browser etwas anfangen kann, nicht aber der Apache.
Anscheinend besteht hier wieder so ein sprachliches Mißverständniss, Denn du überließt anscheinend glatt den Header, gut ich habe nicht HTTP-Header oder wie das Ding heißt geschrieben...
Doch schau mal auf der gleichen erwähnten Seite:
For example, if the URL http://www.example.com/cgi-bin/test.pl is requested, Apache will attempt to execute the file /usr/local/apache2/cgi-bin/test.pl and return the output.
Ich kann zwar nicht gut Englisch, aber steht da nicht "Apache....and return the Output"?
Also bitte wo du doch wie lese sovielprobiert hast, Wie anders kommt der Apache an die Daten des Outputs des Perscriptes ran in obigen Beispiel?
Mit anderen Worten welche Art der Interprozess-Kommunikation kann verwendet werden, wenn Perl kein Child von Apache ist und auch nicht integriert ist.
Warum sollte Apache je nach Modus eine Environment-Variable oder den STDIN verwenden und dann den STDOUT nicht? Irgendwie müssen die Daten doch zum Client zurückkommen die angefordert wurden.
Hast du schon mal probiert welche Wirkung eine .htaccess-Datei im cgi-bin/ - pfad hat der keine der nachfolgenden Schlüsselworte enthält?
AuthUserFile AuthGroupFile AuthType
Ich meine, das das dann irgendwie sinnlos ist.Glaube mir, ich dürfte da mehr probiert haben als mancher andere. Und es ist bemerkenswert, daß dir hier die Bezeichnung "sinnlos" einfällt. Schließlich ist es auch nicht der Pfad, der irgendeines der von dir so genannten Schlüsselwörter aufweisen muß.
Eben, wie ich schrieb "welche Wirkung eine .htaccess-Datei..." und ok, das 'der' müßte ein 'die' sein, dann ist es einfacher, aber ich meinte ja auch nicht die .htaccess-Datei direkt, sondern den durch sie ermöglichten Passwortschutz, der durch sie symbolisiert werden sollte. :-)
Du raubst mir _deine_ Zeit!!!
Oder macht es dir Spass, dich wie eine Maschine zu benehmen? ;-)
Joe