Hallo,
Nun mein Gedanke über "cgi-bin". Diese sonderbaren Verzeichnisse, die unzertrennlich mit Perl in Verbindung gebracht werden (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?
Nun, PerlScripts, besser gesagt, CGI-Scripts , werden im weiteren Sinne als Programme, also als ausführbare Dateichen betrachtet. Und früher war's so, dass Programme Binärdateien , binaries, sind. Joho, aus CGI und BIN , schwuppdiewupp, hahmse (Ouh - ja wer eigentlich, ich war's nich) /cgi-bin/ gemacht.
Als ich vor ein paar Tagen mal hier im Self-Raum rumgelungert bin, bin ich auch mal über eine Apache-Beispielkonfiguration (für unterschiedliche OS) gestoßen... Es war die für einen Apache 1.3, ich benutze schon Apache2 (hmm.. Apache 1.3 muss sehr alt sein, nicht wahr?). Demnach, was ich da gelesen habe, würde ich sagen, dass Dateien in cgi-bin-verzeichnissen grundsätzlich als "ausführbare" Dateien behandelt werden. Mit welcher Datei der Apache sie dann ausführt, dass soll in der ersten Zeile stehen, diesem... wie hieß das gleich nochmal? Naja, sieht auf jeden fall z.B. so aus:
#!/user/bin/..../perl.exe -w
Das is die Shebang. (DE: Kram)
Der Apache brauchtse, danmit er weiß was er mit der Datei machen soll, z.B. die Datei zum PERL - Interbreter schicken zum ausführen.
GRundsätzlich sind Dateien im Verzeichnis /cgi-bin/ nicht grundsätzlich ausführbar, das privileg der Ausführbarkeit ist ein Attribut einer Datei und im FileSystem verankert (um das mal so zu sagen , ja).
oder vergleichbares ;). Nunja, das scheint wohl der Verwendungszweck von cgi-bin-verzeichnissen zu sein [1] - oder gewesen zu sein...!?
Immerhin haben alle Perl-Dateien, die bei dem Installationszip dabei waren, die Endung .pl. Genauso wie die, die bei Apache dabei waren, und die, die bei meinem MySQL dabei waren. Allgemein üblich habe ich überall perl-dateien mit der Endung .pl gesehen. wieso also Perl-Dateien lediglich als keine-endung-dateien in einem cgi-bin-verzeichnis speichern, um sie anschließend mit diesem #!-schnörkel (der name liegt mir auf der zunge....) auszuführen? Ich würde sie in meinen Apachen genauso wie PHP-Dateien einbinden. Dann könnten sie überall liegen. Nur seltsamerweise sieht man sowas heutzutage recht selten. Wieso? Warum? Grund...!?
Im Apache Web Server kannst du entweder einen ScriptAlias auf
/cgi-bin/
/cgi-fuzzi/
angeben oder mit
AddHandler cgi-script .cgi .pl .fuzz .foo .bar
dafür sorgen, dass die Dateien mit obenstehender Erweiterung in jedem Verzeichnis als CGI-Script ausgeführt werden, sofern die laut Dateiattribute auch ausführbar sind.
Gruss, Rolf
SELFforum - Das Tor zur Welt!
Theoretiker: Wie kommt das Kupfer in die Leitung?
Praktiker: Wie kommt der Strom in die Leitung?