Hallo Liste, ich habe eine datenbank die ich via HTML Interface abfragen will. Dazu habe ich die Datenbank in mein Apache Verueichnis gelegt, sowie die HTML Seiten. Das klappt auch. Nur wenn ich etwas abfragen will, möchte der Client immer eine cgi Datei speichern. Warum? Oder besser: Wie muß ich die CGI Datei in Apache behandeln? Was ist eine CGI Datei eigendlich? Danke schonmal, Bye Stefan -- ---------------------------------------------------- Was nicht fliegen kann, stürzt auch nicht ab....... Stefan Eggert - ICQ UIN: 117498296 ----------------------------------------------------
Hallo Stefan, cgi ist keine Datei, sondern ein Verzeichniss in welchem Programme ausgeführt werden dürfen. Da es unsicher wäre an beliebigen Stellen Programme von aussen(also auch vom Browser) zugänglich zu machen, wird ein Verzeichniss definiert in welchem der Webserver dieses gestattet. In der Regel sind diese Programme in Perl geschrieben, können aber in jeder beliebigen Sprache entwickelt werden, wie C oder Java. Normalerweise wirst Du beim Surfen so auf cgi treffen: www.seite.net/cgi/programm.pl ->d.h rufe www.seite.net auf und zwar innerhalb des cgi-Verzeichnisses die programm.pl , welche eine Perl-Datei ist. Es gibt eigentlich keine programm.cgi Dateien, d.h. wenn Du dieses gemacht hast, versucht der Browser ein unbekanntes Dateiformat zu sichern. Weitere gute Infos zu Perl findest Du in Selfhtml.. Gruss Sven
Hmmmm, soweit alles klar. Aber warum bekomme ich vom Browser immer Acces Deny wenn ich das CGI starten will???? Habe Apache auch gesagt wo die cgi Dateien liegen müssen, aber klappen tuts trotzdem nicht. Sven Hohage schrieb:
Hallo Stefan, cgi ist keine Datei, sondern ein Verzeichniss in welchem Programme ausgeführt werden dürfen. Da es unsicher wäre an beliebigen Stellen Programme von aussen(also auch vom Browser) zugänglich zu machen, wird ein Verzeichniss definiert in welchem der Webserver dieses gestattet. In der Regel sind diese Programme in Perl geschrieben, können aber in jeder beliebigen Sprache entwickelt werden, wie C oder Java. Normalerweise wirst Du beim Surfen so auf cgi treffen: www.seite.net/cgi/programm.pl ->d.h rufe www.seite.net auf und zwar innerhalb des cgi-Verzeichnisses die programm.pl , welche eine Perl-Datei ist. Es gibt eigentlich keine programm.cgi Dateien, d.h. wenn Du dieses gemacht hast, versucht der Browser ein unbekanntes Dateiformat zu sichern. Weitere gute Infos zu Perl findest Du in Selfhtml..
Gruss Sven
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
-- ---------------------------------------------------- Was nicht fliegen kann, stürzt auch nicht ab....... Stefan Eggert - ICQ UIN: 117498296 ----------------------------------------------------
Hallo, ich kenne mich mit Rechtevergabe bei CGI's nicht sonderlich gut aus. Les doch einfach ein wenig in folgendem: http://selfhtml.teamone.de/cgiperl/intro/index.htm Gruss Sven
Hallo, Stefan Eggert:
soweit alles klar. Aber warum bekomme ich vom Browser immer Acces Deny wenn ich das CGI starten will???? Habe Apache auch gesagt wo die cgi Dateien liegen müssen, aber klappen tuts trotzdem nicht.
Kontrollier folgende Logfiles: /var/log/httpd/error_log /var/log/httpd/suexec.log (oder so ähnlich) Dort sollte etwas stehen. Spontan tippe ich darauf, daß dein cgi in einem Verzeichnis liegt, welches nicht zur Ausführung von Scripten freigegeben ist. Mach mal testweise folgendes: Gib ein grep "ScriptAlias" /etc/httpd/httpd.conf Du bekommst dann eine Ausgabe der Form ScriptAlias WEBORDNER "FILEORDNER" Bei mir ist das beispielsweise ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin" Das bedeutet: wenn du http://www.meinserver.foo/cgi-bin/ eingibst, werden die Dateien unter "/usr/local/apache/cgi-bin/" an dieser Stelle "eingeblendet", obwohl in deinem htdocs-Ordner dieses Verzeichnis gar nicht vorhanden wird. Inhaltlich falsch, aber du kannst es dir so vorstellen: Das Verzeichnis "cgi-bin" wird an dieser Stelle "reingemountet". Wenn du dein cgi in diesen Ordner legst, sollte die html-Seite es mit "/cgi-bin/meinprogramm.cgi" ansprechen können. Ggf. Permissions erstmal auf 755 setzen. Ach so, und in der ersten Zeile des Scripts steht wahrscheinlich sowas wie #!/pfad/zum/ausführenden/interpreter z.B. #!/usr/bin/perl Der dort angegebene Pfad sollte identisch sein mit der Ausgabe von which perl Wobei zu beachten ist: Ein cgi muß nicht unbedingt in perl geschrieben sein. Handelt es sich um ein binary, ist die Erklärung sowieso hinfällig, und wird eine andere Scriptsprache verwand, ist der Befehl sinngemäss zu ändern. Sollte das alles nix bringen, brauchen wir mehr Infos. Wo liegt das Programm, welche Permissions hat es, welche Sprache, welche Rechte hat der Ordner, in dem es liegt, ist ExecCGI für diesen Ordner in der httpd.conf freigegeben? Sind die Zeilenumbrüche an die Plattform angepasst? Perl-cgis dürfen keine Windows-Zeilenumbrüche haben. Bis denn, Ratti
participants (3)
-
Ratti
-
Stefan Eggert
-
Sven Hohage