WauWau: cgi-bin.... (noch) notwendig?

Beitrag lesen

Hola Christoph,

nun, WauWau hat gestern __endlich__ Mal ActivePerl für Windows runtergeladen
Wurde aber auch Zeit :o)

ganz genau - hatte ich schon seit ein paar Tagchen vor ;-)

Hast es denn nach dem Runterladen auch installiert?

[dabei ziehe ich jetzt mal was vor:]

Immerhin haben alle Perl-Dateien, die bei dem Installationszip dabei waren, die Endung .pl
Öhm, was für ein "Installationszip" war das denn? Bei ActivePerl gibts sowas nicht.

Also, es gab das Ding als zip und als msi. Ich wollte mir eigentlich das MSI-Teil holen.. keine ahnung, in geistesabwesenheit muss ich wohl irgendwie auf das zip gekommen sein ;-) Das hatte ich dann auf der Platte, habe es mal extrahiert (alleine das hat schon 10 Minuten gedauert ;-), und dann wundervolle Dateien auf der Platte. Da war auch gleich eine nette .bat dabei, die auf der Konsole auch das gemacht hat, was sie machen sollte, und zwar Perl richtig "installieren"... ooeehmm, was hat das eigentlich gemacht? Ich bemerke gerade, dass die Endung "pl" gar nicht mit dem Perl-Interpreter "verbunden" wurde 8[
Na gut, es hat das gesamte ding einmal in ein anderes verzeichnis kopiert (das hat ungefähr eine halbe stunde gedauert ;) und das sowieso schon hässliche startmenü mit ein paar weiteren einträgen verschmutzt *g* ;) Ansonsten nix... ;)
Na gut, fehlendes, wie z.B. der Eintrag in die httpd.conf sowie der Eintrag der "pl"-Endung in Registry hat es nicht gemacht - sei's drum, ist ne sache von 50 sekunden ;)

Ach ja, bezüglich CGI/SAPI: Ich habe PHP als SAPI beim Apachen drin, afaik heißt das, dass alle "Module", die SAPI-dll sowie die php.exe im arbeitsspeicher "geladen" sind, nicht wahr? Jo, wenn ich Perl dann per einfachem CGI einbinde, dann ist das da nicht so, oder? Will ich nämlich hoffen, denn _noch_ mehr Ressourcen kann ich meinem armen kleinen PCchen hier wirklich nicht zumuten, er hat jetzt schon zuwenig 8[

Nun mein Gedanke über "cgi-bin". Diese sonderbaren Verzeichnisse, die unzertrennlich mit Perl in Verbindung gebracht werden
Ups? Das tun sie nicht.

Richtig, tun sie auch nicht. Dasda:

(zumindest in jedem Zusammenhang, den ich bis jetzt gehört habe), scheinen ja was ganz tolles zu sein. Oder gewesen zu sein. Oder wie jetzt?

stammt übrigens von mir, und gehört zu dem da oben dazu. Wenn du das in der Klammer noch dazu "bappst", dann gibt's wieder einen imho richtigeren Sinn.

Die "Unzertrennlichkeit" hat was mit CGI zu tun. Natürlich ist PERL dafür nicht ganz unwichtig, aber bei weitem nicht der einzige "Teilhaber".

jo, genau.

Ach bezüglich cgi-bin: Kann man da dann auch eigene schöne .exe-teile und sowas reinpacken, und die werden dann als cgi-programme ausgeführt? coool :)

grrrmpf ... jaein. Du kannst in ein solches Verzeichnis auch eine HTML-Datei legen, und was würdest du von der "ausführen" lassen wollen?

hmm... nein :)
Ich meinte eigentlich, dass es afaik bei Apache eine Möglichkeit gibt, dass er die Dateien dann unabhängig ihrer Endung einfach alle als cgi-dateien ausführt.

/cgi-bin/program
  /cgi-bin/programmblabla

Richtig ist allerdings, daß ein solches Verzeichnis _in der Regel_ ausführbare Dateien enthält.

na wenn's doch so ist ;) - mein weberver enthält um die 500 ausführbare Dateien, und keine einzige steckt in einem cgi-bin-verzeichnis :)

Mit welcher Datei der Apache sie dann ausführt, dass soll in der ersten Zeile stehen

Genau, dieser shebang-...strengenommener fastschwachsinn.

Du meinst die shebang. Es gibt dort eine Pfadangabe, die korrekt sein muß, falls es sich bei deiner CGI-Datei tatsächlich um ein PERL-Script handelt. Ich habe in meinem CGI-BIN-Verzeichnis auch noch allerhand BAT- und EXE- und ein paar andere ausführbare Dateien liegen, und die benötigen keine shebang.

genau, weil sie ja auch _richtige_ ausführbare dateien sind ;)

Bezüglich shebang: Die plattformunabhängigkeit, ja sogar rechnerunabhängigkeit ist dadurch ja völlig zerstört. So schicke ich dir jetzt mal 100 Perl-Dateien von mir, und alle haben im Shebang die Adresse _meiner_ perl.exe, und zwar D:/perl/bin/perl.exe (ist es glaube ich ;) stehen, und bei dir ist es dann /usr/bin/perl oder sowas... nicht wahr?

Allgemein üblich habe ich überall perl-dateien mit der Endung .pl gesehen
Das ist mehr oder weniger durch Gewohnheit geheiligter "Standard". Sie könnten aber genausogut ".alfons" heißen, sofern dein Webserver und dein Interpreter was damit anfangen kann.

jo, klar. "allgemein üblich"... Alle Perl-Dateien, auf die ich bis jetzt gestoßen bin, hatten entweder keine endung oder die endung "pl".

Selbstverständlich hält auch Apache2 die Einrichtung von cgi-bin-Verzeichnissen vor, einschließlich der zugehörigen Script-Aliase. Wer erzählt dir da was anderes?

Ich meinte dieses Verhalten mit dem Shebang. So, und jetzt muss ich endlich meine Quelle zu rate ziehen:

http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf061.htm

Ich zitiere, etwas unterhalb der "mitte":

--------------------------------------------------------------

Apache durchsucht grundsätzlich sämtliche CGI-Scripts nach einer "shebang"-Zeile.

Diese Kommentarzeile, die immer die erste Zeile des Scripts sein muß, besteht

aus der Raute (#) und einem Ausrufezeichen (!), gefolgt von der Pfadangabe für

das Programm, das dieses spezielle CGI-Script ausführen soll.

Beispiel:

Sie möchten ein Perl-Script als CGI-Script ausführen lassen. Der Pfad zu Ihrer

"perl.exe"lautet "C:\Perl\bin". Dann muß die "shebang"-Zeile folgendes Aussehen

haben:

#  #!C:/Perl/bin/perl.exe

AUF GAR KEINEN FALL darf die aktuelle "shebang"-Zeile eingerückt werden, und es

muß auch IMMER die erste Zeile in Ihrem Script sein. Selbstverständlich müssen

Sie auch die Ausführung von CGI-Programmen durch Ihren Server zulassen, indem Sie

entsprechende Script-Aliase vergeben oder die Anweisung "Options ExecCGI" für

die infrage kommenden Dateien bzw. Verzeichnisse aktivieren.

Apache kann unter WINDOWS entweder das eben beschriebene UNIX-Verhalten

befolgen oder die registry nach Dateinamen-Erweiterungen durchsuchen. Der Befehl

zum Ausführen einer Datei, deren Typ in der registry beschrieben ist, wird

übernommen und mit derselben Methode abgearbeitet, mit der der WINDOWS-

Explorer diesen Dateityp bei einem Doppelklick mit der Maustaste behandeln

würde.

Sie können unter WINDOWS selbst bestimmen, welches Programm für die

Abarbeitung von bestimmten Dateinamen-Erweiterungen zuständig sein soll. Dazu

öffnen Sie im WINDOWS-Explorer unter "Ansicht" die "Ordneroptionen", klicken

dort auf die Registerkarte "Dateitypen" und legen in den sich öffnenden Dialogfenstern

fest, welches Programm Apache beim Aufruf des ausgewählten Dateityps ausführen

soll. Schlägt eine Programmausführung fehl, wird Apache versuchen, den "shebang"-

Befehl zu befolgen.

Dieses Verhalten soll in der Apache-Version 2.0 anders gestaltet werden.

--------------------------------------------------------

Mit einem Augenmerk auf die letzte Zeile.

Ach ja, und danach kam sowas:

--------------------------------------------------------
 Jeder Mechanismus hat seine eigenen Sicherheitsrisiken, wenn Sie ein Programm

von einer Webseite aus direkt aufrufen, aber nicht immer erst eine Sicherheitsabfrage

beantworten möchten. Die Suche nach geeigneten risikolosen Methoden ist die

Grundlage einer unendlichen Debatte.

Um nun dieses spezielle WINDOWS-Verhalten zu erlauben (und den äquivalenten

UNIX-Stil zu unterdrücken) entfernen Sie das Kommentarzeichen vor der nächsten

Zeile.

ScriptInterpreterSource registry
-------------------------------------------------------

Die Direktive habe ich bei Apache2 noch nirgends gefunden.

WauWau

--
ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
E-Mail WauWau: mailto:selfforum.wauwau@spameater.org