CGI Forbidden auf apache2
dieter
- webserver
0 *Markus0 Christoph Schnauß0 dieter0 迪拉斯0 dieter
0 Christoph Schnauß
0 steckl
Hi
Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
kann mir wer helfen, was ich da einstellen muss?
danke fuer die hilfe
cu
dieter
Hallo,
Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.
Hmmmm, kann mich gar nicht erinnern, dass ich je irgendetwas nachinstallieren musste, um CGI-Support für Perl zu bekommen.
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
Hast du den Server so konfiguriert, dass du CGI-Scripte in allen Verzeichnissen ausführen darfst? (ExecCGI)
kann mir wer helfen, was ich da einstellen muss?
Was genausteht denn im error_log?
Markus
also in der
/var/log/apache2# vim error.log
steht nichts brauchbares
aber, in der apache2.conf steht nicht vonwegen ExecCGI
was genau soll ich da reinschreiben?
Hallo,
Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.
Hmmmm, kann mich gar nicht erinnern, dass ich je irgendetwas nachinstallieren musste, um CGI-Support für Perl zu bekommen.
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
Hast du den Server so konfiguriert, dass du CGI-Scripte in allen Verzeichnissen ausführen darfst? (ExecCGI)
kann mir wer helfen, was ich da einstellen muss?
Was genausteht denn im error_log?
Markus
hallo,
also in der
/var/log/apache2# vim error.log
steht nichts brauchbares
Was wohl bedeutet, daß du nichts damit anfangen kannst. Was steht denn nun drin?
was genau soll ich da reinschreiben?
Daß es einen Artikel dazu gibt, ist dir bekannt?
Und noch eine Kleinigkeit: laß das mit dem full Quoting bitte sein.
Grüße aus Berlin
Christoph S.
gut, kein quoting ;-)
ja, den artikel hab ich mir reingezogen, der hilft mir aber nicht weiter. genau den container, der dort steht, hab ich in meine apache2.conf geschrieben
ok. gut, die error.log hat mir gerade doch geholfen. obwohl mein container eben /var/www/cgi-bin/ dem server sagt, geht er auf /usr/lib/cgi-bin/
gut, dann stelle nsich zwei neue probleme:
erstnes:
ich hab in den usr/lib/cgi-bin eine testdatei getan, namens test.pl, wie in dem artikel beschriebn. dann bekomme ich folgende meldung:
Internal Server Error
die error log meint dann:
[Mon Nov 20 17:18:34 2006] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/lib/cgi-bin/
[Mon Nov 20 17:18:40 2006] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/test.pl
[Mon Nov 20 17:18:52 2006] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/irc.cgi
[Mon Nov 20 17:23:13 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
[Mon Nov 20 17:23:13 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
[Mon Nov 20 17:25:24 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
[Mon Nov 20 17:25:24 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
[Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
[Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
2. frage, wie bekomme ich ihn dazu, einen anderen ordner zu nehmen, als usr/lib/cgi-bin?
danke fuer die hilfe!! :-)
Hurra, es klappt doch
aber nur in dem usr/lib/cgi ordner. wie bekomme ich den wo anders hin?
aber nur in dem usr/lib/cgi ordner. wie bekomme ich den wo anders hin?
Wie meinst du das? Setzt doch einfach ExecCGI im Wurzelverzeichnis. Somit kannst du CGI-Scripts überall ausführen.
Markus
Hallo dieter,
gut, kein quoting ;-)
Du kannst schon zitieren (sollst du sogar), aber immer nur den (Ab-)Satz worauf du dich gerade beziehst.
ok. gut, die error.log hat mir gerade doch geholfen. obwohl mein container eben /var/www/cgi-bin/ dem server sagt, geht er auf /usr/lib/cgi-bin/
Zum Anzeigen von Dateien eignet sich vim nicht so wirklich, das ist ein Editor. Nimm doch z. B. tail, das zeigt dir nur die letzten zehn (bzw. -n anzahlderzeilen
) Zeilen an.
ich hab in den usr/lib/cgi-bin eine testdatei getan, namens test.pl, wie in dem artikel beschriebn. dann bekomme ich folgende meldung:
[Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
Du musst die HTTP-Header mit ausgeben (abgeschlossen von zwei Newlines). Meistens reicht ein print("Content-Type: text/html\n\n");
- frage, wie bekomme ich ihn dazu, einen anderen ordner zu nehmen, als usr/lib/cgi-bin?
Guck mal, ob du ein Verzeichnis 'sites-enabled' hast. Wahrscheinlich wird dort ein VirtualHost definiert, in dem ein ScriptAlias definiert wird, das den von dir angegeben globalen Überschreibt. Das ist AFAIK die Standardeinstellung bei Debian (bei Ubuntu jedenfalls, und ich hab 'ne Weile gebraucht, um rauszufinden, warum ich den DocumentRoot nicht ändern konnte ;) )
Und denk dran, dass es einen Unterschied gibt zwischen usr/lib/cgi-bin und /usr/lib/bin. In der Apache-Konfigurationsdatei wird ersteres als relativ zum ServerRoot interpretiert, also z. B. /etc/apache2/usr/lib/cgi-bin.
Viele Grüße aus Freiburg,
Marian
hallo,
jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.
Was versprichst du dir davon? Die Ausführung von CGI-Scripts (Perl) ist auch ohne diesen Zusatz problemlos möglich.
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
Und was bekommt dein Server? Also, was steht im log?
Grüße aus Berlin
Christoph S.
hab folgenden teil in die apache2 geschrieben:
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
<Directory "/srv/www/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
des weiteren habe ich einen ordner in var/www angelegt, namens cgi-bin
wenn ich dort eine cgi datei reinlege, sagt er, er findet sie nicht. wen ich nur den ordner ueber http://localhost/cgi-bin/ aufmachen will, sagt er forbidden
ich blick da nicht durch, wo das problem liegen koennte
hallo,
jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.
Was versprichst du dir davon? Die Ausführung von CGI-Scripts (Perl) ist auch ohne diesen Zusatz problemlos möglich.
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
Und was bekommt dein Server? Also, was steht im log?
Grüße aus Berlin
Christoph S.
Hey,
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
des weiteren habe ich einen ordner in var/www angelegt
die beiden Pfade müssen schon übereinstimmen.
ja, tun sie eh. hab nur den alten container noch kopiert gehabat. die pfade passen schon. leider, das problem waer mir leiebr gewesen, aber daran liegts nicht :-(
Hey,
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
des weiteren habe ich einen ordner in var/www angelegt
die beiden Pfade müssen schon übereinstimmen.
hallo,
hab folgenden teil in die apache2 geschrieben:
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
Das kannst du so machen.
des weiteren habe ich einen ordner in var/www angelegt, namens cgi-bin
Warum? Was ist denn die DocumentRoot deines Servers?
wen ich nur den ordner ueber http://localhost/cgi-bin/ aufmachen will, sagt er forbidden
Selbstverständlich, das sagt mir meiner auch. Du mußt dein Script aufrufen, also den Scriptnamen einschließlich Pfad eingeben.
Grüße aus Berlin
Christoph S.
Hi,
so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.
kann mir wer helfen, was ich da einstellen muss?
Hast du die execute-Rechte richtig gesetzt? Laufen die Scripts in der Kommandozeile?
mfG,
steckl