PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache /cgi-bin/



SAdemar
29.10.03, 16:49
Hallo alle zusammen,

habe ein Problem mit dem Apache 1.3x.

Also ich kann leider keine *.cgi files ausführen. die Files liegen alle im cgi-bin Ordner, die benutzerrechte sind auf dem des Webservers eingerichtet, ausführbar. Bekomme aber immer eine Fehlermeldung.

Im Browserfehlermeldung:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@openpipe.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.


More information about this error may be available in the server error log.
--

error.log
[Wed Oct 29 15:38:41 2003] [error] [client 217.232.74.56] Premature end of script headers: /home/www/web1/html/cgi-bin/index.cgi
--

suexec.log
[2003-10-29 15:38:41]: info: (target/actual) uid: (web1/web1) gid: (ftponly/ftponly) cmd: index.cgi
[2003-10-29 15:38:41]: error: command not in docroot (/home/www/web1/html/cgi-bin/index.cgi)


Danke für eure Hilfe :)

Bauchi
29.10.03, 23:04
Premature end of script headers: ...

Das CGI File ist defekt .. mal wieder BIN anstatt ASCII übertragen ??

steve-bracket
30.10.03, 07:50
Original geschrieben von Bauchi
Premature end of script headers: ...

Das CGI File ist defekt .. mal wieder BIN anstatt ASCII übertragen ??

Defekt ?????
Wie das?

johnpatcher
30.10.03, 08:01
ich glaube er meint damit, dass du statt mit bin mit asci II übertragen sollst!!

elevator
30.10.03, 08:22
Original geschrieben von SAdemar
[...]
[2003-10-29 15:38:41]: error: command not in docroot (/home/www/web1/html/cgi-bin/index.cgi)
[...]
Suexec funktioniert nur wenn die Scripte in dem doc_root liegen welches beim bauen vom Apache bei --suexec-docroot angegeben wurde.

Mach mal ein
suexec -V

-D DOC_ROOT=
sollte auf /home oder /home/www stehen. Ich gehe mal davon aus das es nicht nur web1 gibt (geben wird in Zukunft).

Sollte das nicht der Fall sein, die Scripte entweder ins DOC_ROOT packen welches bei suexec -V ausgegeben wird, oder suexec schnell neu bauen.
Kurz HowTo:
Apache Sourcedode runterladen & entpacken.
cd apache_1.3.XX/src/support
vi suexec.h
# In der suexec.h die richtigen Optionen einstellen die man haben will, das ganze speichern und

make suexec

aufrufen. Danach einfach das alte suexec bin. durch das neue ersetzten.

Weite Infos zu suexec: http://httpd.apache.org/docs/suexec.html


Gruß
elevator

SAdemar
30.10.03, 11:48
kann nicht sein da das file direckt auf dem Server erstellt wurde :)#

Also muß der Fehler eine andere Ursache haben.
MFG

Bauchi
30.10.03, 12:50
führ das script von der command line aus .. wenn's funzt weisst du ja ob's im arsch ist oder nicht ..

Premature End ... ist in der regel ein indiz dafür das das file falsch übetragen wurde ...
muss es aber nicht .. es kann genausogut sein das das teil wo anders nen fehler hat


perl mein.cgi ... schau ob's funzt

SAdemar
30.10.03, 13:23
auf der comandline funzt es :) also liegt es an einen anderen Fehler :)
mfg
christian

SAdemar
31.10.03, 08:13
keiner mehr eine Idee ?

MFG

Christian

elevator
31.10.03, 08:32
Original geschrieben von SAdemar
keiner mehr eine Idee ?

MFG

Christian

Es liegt noch immer an suexec. Wenn du mir das nicht glaubst befrag mal eine Suchmaschine deiner Wahl ;). Entweder User & Group aus dem VHost rausnehmen oder suexec mit passendem doc_root neu bauen, oder das Script in einen Ordner packen der sich im doc_root von suexec befindet. Die Fehlermeldung im suexec.log ist doch eigentlich deutlich genug :confused:

Gruß
elevator

SAdemar
31.10.03, 08:47
reicht das auch das man suexec einer gruppe zuordnet die auch für die VHosts zuständig ist?

MFG

Christian

elevator
31.10.03, 09:11
Original geschrieben von SAdemar
reicht das auch das man suexec einer gruppe zuordnet die auch für die VHosts zuständig ist?
[...]
Wie meinst du das genau?

Du hast wie gesagt nur die 3 oben stehenden Möglichkeiten. Auf suexec verzichten würde ich nicht. Alle Scripte in das z.Z. gesetzte doc_root von suexec verschieben wär mir persöhnlich zu viel Arbeit :D. Also bleibt nur noch suexec neu bauen.

Guck einfach in der httpd.conf nach unter welchem User der Apache läuft.
[ grep ^User /path/to/httpd.conf ]

Den User trägst du dann bei

#define HTTPD_USER "www"

ein.
Angenommen du hättest SuSE, dann würde der User in der httpd.conf wohl auf wwwrun stehen. Dann müsstest du nur die Zeile in

#define HTTPD_USER "wwwrun"

abändern.


#define DOC_ROOT "/usr/local/apache"

ändern auf

#define DOC_ROOT "/home/www"


#define LOG_EXEC "/usr/local/apache/logs/cgi.log"

z.B. auf

#define LOG_EXEC "/var/log/httpd/suexec_log"

ändern, oder wo immer das Logfile hin soll.

Den Rest kannst du so stehen lassen.
Das ganze speichern, und make suexec aufrufen. Danach hast du im gleichen Verzeichnis das neue suexec. Einfach schnell mit ./suexec -V testen ob das DOC_ROOT jetzt auf /home/www steht, und das alte suexec durch das neue ersetzten. Danach sollte das klappen :)

Gruß
elevator

SAdemar
31.10.03, 22:00
Also das habe ich nun gemacht :)

Wenn ich jetzt denn Apache starte erhalte ich auf der Konsole diese Meldungen:

Warning: User directive in <VirtualHost> requires SUEXEC wrapper.
Warning: Group directive in <VirtualHost> requires SUEXEC wrapper.

Wenn ich jetzt ein cgifile versuche über den Browser zuöffnen bietet er mir an es runterladen.

MFG

elevator
31.10.03, 22:43
Hi.

Stimmen die Rechte vom suexec bin.?
Sollten so aussehen:


server:~ # ls -l `which suexec`
-rws--x--x 1 root root 11172 Okt 31 05:17 /usr/sbin/suexec
server:~ #


Gruß
elevator

SAdemar
01.11.03, 01:45
ja

MFG

Christian

SAdemar
01.11.03, 18:33
also bash scripte kann ich jetzt ausführen, aber perl ist immer noch das gleiche Problem.

MFG