Schon wieder :(... CGI-BIN - 500 Internal Server Error

Bash, Shell, PHP, Python, Perl, CGI
patricks
Posts: 30
Joined: 2003-01-02 19:51
Location: Hannover

Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by patricks »

Hallo Leute!

So, ich habe folgendes Problem:
Ich habe einem Kunden von mir CGI/Perl freigeschaltet. Soweit ok!
Der "cgi-bin" Ordner besitzt die Rechte 755 und gehört dem zuständigen Web (Owner: webX | Group: ftponly). Die Perl-Datei besitzt Rechte 777 (brachte/bringt nix.. alle Rechte unter 777 funktionieren genausowenig).
Als Fehler bekomme ich die Altbekannte Fehlermeldung "500 Internal Server Error".
Das Error-Log (/var/log/httpd/error_log) gibt mir folgendes aus:
[Tue Sep 16 15:59:40 2003] [error] [client XXX.XXX.XXX.XXX] Premature end of script headers: /home/www/webX/html/cgi-bin/test.pl
Das Suexec-Log (/var/log/httpd/suexec.log) gibt mir folgendes aus:
[2003-09-16 15:59:40]: info: (target/actual) uid: (webX/webX) gid: (ftponly/ftponly) cmd: test.pl
[2003-09-16 15:59:40]: error: file is writable by others: (/home/www/webX/html/cgi-bin/test.pl)
In der "/etc/httpd/httpd.conf" steht folgendes: "AddHandler cgi-script .cgi .pl"! Confixx richtet mir die Benutzer auch richtig ein... also so...

Code: Select all

<Directory "/pfad/zum/CGI-Verzeichnis">
  ...
  Options +ExecCGI
  ...
</Directory>
Das Script sieht wie folgt aus (mein Test-Script... was billigeres gibt's nicht mehr...):

Code: Select all

#!/usr/bin/perl

print "Content-type: text/htmlnn";
print "<H1>Hello World</H1>n";
Die Angabe "/usr/bin/perl" ist korrekt und die Datei befindet sich auch dort!!!
Ob ich dem Benutzer nun Shell freischalte oder nicht (wegen /bin/false) ist völlig egal. Es funktioniert so und so nicht. Und das Perl-Script ist bestimmt auch kein Shell-Script!! (Bei CGI-Dateien gibt es übrigens die selben Probleme)

Kann mir da jemand helfen?!


Greetz, PatrickS
Last edited by patricks on 2003-09-16 16:32, edited 2 times in total.
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by simcen »

Ich hatte das selbe Problem:
http://www.rootforum.org/forum/viewtopic.php?t=16705

Damit du den Thread nicht lesen musst:
Wahrscheinlich liegt es an suEXEC, sofern du es installiert hast. Wenn ja, guck mal in /var/log/suexec.log und Poste die Meldung, die zum Zeitpunkt beim ausführen deines Scripts eingetragen wird.

PS: http://httpd.apache.org/docs/suexec.html

(danke dodolin =) )
patricks
Posts: 30
Joined: 2003-01-02 19:51
Location: Hannover

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by patricks »

Hi!

Hab in meinem Beitrag oben soebend (wärend du geantwortet hast) die Ausgabe des SuEXEC-Log gepostet.


hmmm.. die Docs helfen mir irgendwie wenig bis garnicht weiter. :(
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by oxygen »

Steht doch schon da:
[2003-09-16 15:59:40]: error: file is writable by others: (/home/www/webX/html/cgi-bin/test.pl)
chmod o-wrx /home/www/webX/html/cgi-bin/test.pl
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by simcen »

[2003-09-16 15:59:40]: error: file is writable by others: (/home/www/webX/html/cgi-bin/test.pl)
Suexec ist ja da zum Benutzerrechte einzuschränken also wäre sinnvoll wenn das File auch nicht von jedem beschreibbar ist.

--> mach mal chmod o-wrx /home/www/webX/html/cgi-bin/test.pl

Edit: Grml, oxy war schneller, und wir haben das genau gleiche gepostet :D
patricks
Posts: 30
Joined: 2003-01-02 19:51
Location: Hannover

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by patricks »

hmmm...
Der Befehl (chmod o-wrx /home/www/webX/html/cgi-bin/test.pl) bringt leider garnix. Es kommt weiterhin Error 500 und die selbe Meldung im Error-Log sowie im SuEXEC-Log wie vorher... :(
Die Rechte des Scripts wurden halt nun auf "770" gesetzt.
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by simcen »

Hast du in Suexec für zb. den Vhost andere User & Group festgelegt, als das File rechte hat?

-> im Virtualhost auf "User" und "Group" achten und im /home/www/webX/html/cgi-bin mal "ls -l" machen und Owner überprüfen
patricks
Posts: 30
Joined: 2003-01-02 19:51
Location: Hannover

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by patricks »

Ich habe gerade "ls -l" im entsprechenden Ordner ausgeführt.
Der Owner ist "webX" (ist das richtige web) und die Gruppe ist "ftponly". Die Rechte sind wie gesagt 770 (chmod o-wrx /home/www/webX/html/cgi-bin/test.pl).
In der SuEXEC hab ich nichts geändert. Das lass ich ja alles über Confixx laufen. Und im Confixx bzw. in der Confixx VirtualHost Datei stimmt alles.

Wenn ich aufrufe "suexec -V" wird angezeigt:
-D DOC_ROOT="/home/www"
-D GID_MID=96
-D HTTPD_USER="wwwrun"
-D LOG_EXEC="/var/log/httpd/suexec.log"
-D SAFE_PATH="/bin:/usr/bin"
-D UID_MID=96
-D USERDIR_SUFFIX="public_html"
blacktiger
Posts: 239
Joined: 2003-01-15 17:02
Location: Neustadt a.d.W.

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by blacktiger »

hab da auch echt meine probleme mit. bei mir erscheint im error_log immer
Can't open perl script "^M": No such file or directory
[Wed Sep 17 21:25:37 2003] [error] [client 212.23.140.131] Premature end of script headers: /home/www/web10/html/cgi-bin/test.pl
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by wgot »

Hallo,
Blacktiger wrote: Can't open perl script "^M"
Premature end of script headers
eindeutige Fehlermeldung: das Script wurde nicht ASCII hochgeladen.

^M ist genau das Steuerzeichen, das Windows an jedem Zeilenende zusätzlich einfügt, das unter Linux nichts zu suchen hat, und das beim ASCII-Hochladen wegradiert wird.

Ob Du ASCII hochgeladen hast, läßt sich ganz einfach prüfen: Dateigröße unter Windows bestimmen und Dateigröße auf dem Server bestimmen (PuTTY oder einfach FTP). Die Datei auf dem Server muß kleiner sein.

Sie ist genau soviel Byte kleiner, wie die Datei Zeilen hat. Aber das brauchst Du nicht nachzählen, kleiner genügt normalerweise als Kontrolle.

Gruß, Wolfgang
jaky
Posts: 141
Joined: 2003-03-23 13:04
Location: Cambrils (E)

Perl Pfad

Post by jaky »

Ich denke, für einige die sich schon länger mit Script rumärgern kommt jetzt ne einfache Frage:

1:
#!/usr/bin/perl

Muss ich die beiden Sonderzeichen am Anfang der Zeile im Script stehen lassen oder kommen die weg??

---------------------------------------------------
2:
Gibt es ein Script das mir alle "vollen" Pfade ausliest?

Wenn ja, wo bekommt man das?
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by flo »

1:
#!/usr/bin/perl

Muss ich die beiden Sonderzeichen am Anfang der Zeile im Script stehen lassen oder kommen die weg
Diese Zeile sagt aus, mit welchem Programm (Interpreter) diese Datei ausgeführt werden kann. Ã?brigens auch ein beliebter Fehler bei CGIs, die man sich aus dem Netz runterlädt, ab und zu stehen da eben falsche Pfade, z.B. zu Perl drin.
2:
Gibt es ein Script das mir alle "vollen" Pfade ausliest?
?????????
jaky
Posts: 141
Joined: 2003-03-23 13:04
Location: Cambrils (E)

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by jaky »

flo wrote:
1:
#!/usr/bin/perl

Muss ich die beiden Sonderzeichen am Anfang der Zeile im Script stehen lassen oder kommen die weg
Diese Zeile sagt aus, mit welchem Programm (Interpreter) diese Datei ausgeführt werden kann. Ã?brigens auch ein beliebter Fehler bei CGIs, die man sich aus dem Netz runterlädt, ab und zu stehen da eben falsche Pfade, z.B. zu Perl drin.
2:
Gibt es ein Script das mir alle "vollen" Pfade ausliest?
?????????
zu 1: Muss ich den jetzt die Zeichen #! da vor stehen lassen?? Oder müssen die zu Ausführen des Scripts da weg??

zu 2: Es muß doch ein PHP Script geben, das mir die gesamten eingestellten Rootserver Pfade ausliest, die ein Kunde zum Beisoiel benötigt

z.B.:
/home/www/web156/html/cgi-bin/contray/
/usr/bin/perl
u.s.w.

Ist doch bequemer dem Kunden so ein Scipt von Anfang an zu Installieren.
Oder??
steffz
Posts: 84
Joined: 2003-04-13 13:07
Location: Hamburg

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by steffz »

1. Stehen lassen.
2. Wieso Script? Die Pfade sind doch, vom Document Root abgesehen, immer die gleichen. Und die solltest du kennen.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by flo »

1)
Das sind absolute Grundlagen, manchmal kein Wunder, daß es auf dieser Welt noch offene formmailer gibt ...

2)
Das ist relativ sinnfrei ... welchen Nutzen versprichst Du Dir davon, die Pfade zu kennen, die Deine "Kunden" verwenden.

Mit REGXPs kannst Du das schon machen, aber jedes Fiel zu scannen und nach Pfadangaben zu durchsuchen!?

Grüße,

Flo.
jaky
Posts: 141
Joined: 2003-03-23 13:04
Location: Cambrils (E)

CGI-BIN - 500 Internal Server Error

Post by jaky »

Steffz wrote: 1. Stehen lassen.
2. Wieso Script? Die Pfade sind doch, vom Document Root abgesehen, immer die gleichen. Und die solltest du kennen.
------------------------------------

Zu 1:
Es ist noch kein Meister vom Himmel gefallen!! :twisted:

zu 2:
Es geht nich um micht, sondern um die Kunden. Jedesmal die gleiche Frage:" Ich muss im Script dies und das ändern. Wo bekomme ich die Infromationen

z.B.: Für voller Pfad

den hier :require("/home/www/web17/html/cgi-bin/programm/variables.cfg");

oder
den hier :require("/home/www/mein-name.de/html/cgi-bin/programm/variables.cfg");

Mit einem Script (für unsere FAQ´s) das dies beantwortet wäre es einfacher.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Schon wieder :(... CGI-BIN - 500 Internal Server Error

Post by flo »

Meister fallen nicht zum Himmel, das ist klar, aber die anderen eher unsanft auf den Boden ... :P

Ich denke, es ist der falsche Ansatz, bei Punkt 2) von den Kunden auszugehen ... sag Deinen Kunden doch:

1) Pfad zu Perl
2) Pfad zu ihrem home
3) Pfad zur wwwroot
4) Pfad zum cgi-bin

fertig.

Folgende Gründe:
- Ein Kunde, der so spezielle Sachen vorhat, daß er die Pfade benötigt, ist froh um die Information und muß diese lediglich wissen
- Fängst Du damit an, anderer Leute Webs zu debuggen, weil der betreffende Benutzer sich nicht auskennt, geht er davon aus, daß Du das machst, weil etwas nicht läuft ...
- Jeglicher Tanz "aus der Reihe" heißt auch daß evtl. Deine Standardpfade (für Backup usw.) nciht mehr passen

Grüße,

Flo.