PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CGI funktioniert nicht (richtig)



verve
04.10.02, 14:11
hallo!

Ich habe ein Problem:
Große und komplexe CGI-Skripte scheinen auf meinem Server nicht zu laufen.
Es kommt immer ein "Internal Server error 500"!
Kleine Skripte funktionieren jedoch!
Woran könnte das liegen?
Ist vielleicht was in der httpd.conf - Datei falsch eingestellt?

greetings

verve:cool: :confused:

verve
05.10.02, 16:18
Hallo

Warum antwortet denn hier niemand?
Ich war schon über die Suchfunktion auf CGI, aber da gab es entweder auch keine richtigen Lösungen oder ich hab sie nicht verstanden! Könntet ihr mir bitte damit helfen?
Ich wäre euch sehr dankbar, auch wenn es für euch Zeitverschwendung ist mir hier zu helfen! Ich würde mich trotzdem über eure Hilfe freuen!

greetings

verve

termito
05.10.02, 21:41
Wie wärs mal mit Fehlermeldungen die in /var/log/* ausgegeben werden
--> /var/log/apache/error.log

Fehlermeldungen vom Browser sind etwas dürftig

verve
05.10.02, 21:53
danke termito!

Ich guck mal nach und berichte dann was da drinne steht!
Vielen Dank für deinen Hinweis!

greetings

verve

daddel9
05.10.02, 21:54
ertmal musst du das verzeichniss cgi-fähig machen :

ScriptAlias /testcgi-bin/ "/cgi-pfad/"


<Directory /cgi-pfad>
AllowOverride None
Options +ExecCGI
</Directory>


in der httpd.conf .... danach dem ganzen script 755 geben .... wenn in der readmy etwas anderes steht natürlich das . falls es nur bei extrem großen scripten ist kann es auch je nach pc an dem seiner rechenpower liegen .

verve
06.10.02, 10:32
Hallo,

also in der var/log/httpd/error log (das ist doch die richtige oder?)

steht bei cgi-skripten immer : "premature end of script headers" !!

Meine httpd.conf sieht so aus (Auszug aus dem für cgi wesentlichen Teil):


# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"

<IfModule mod_perl.c>
# Provide two aliases to the same cgi-bin directory,
# to see the effects of the 2 different mod_perl modes.
# for Apache::Registry Mode
ScriptAlias /perl/ "/usr/local/httpd/cgi-bin/"
# for Apache::Perlrun Mode
ScriptAlias /cgi-perl/ "/usr/local/httpd/cgi-bin/"
</IfModule>
#
# "/usr/local/httpd/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
#<Directory "/usr/local/httpd/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>

</IfModule>
# End of aliases.


#
# set /cgi-bin for CGI execution
#
<Location /cgi-bin>
AllowOverride None
Options +ExecCGI -Includes
SetHandler cgi-script
</Location>

#
# If mod_perl is activated, load configuration information
#
<IfModule mod_perl.c>
Perlrequire /usr/include/apache/modules/perl/startup.perl
PerlModule Apache::Registry

#
# set Apache::Registry Mode for /perl Alias
#
<Location /perl>
AddHandler perl-script .pl
PerlHandler Apache::Registry
Options ExecCGI
PerlSendHeader On
</Location>

#
# set Apache::PerlRun Mode for /cgi-perl Alias
#
<Location /cgi-perl>
SetHandler perl-script
PerlHandler Apache::PerlRun
Options ExecCGI
PerlSendHeader On
</Location>

</IfModule>

Sieht da jemand ein Fehler drin?
Könnt ihr vielleicht sagen, was der Fehler "premature end of script headers" ist?
Danke schon mal im vorraus!

greetings

verve

termito
06.10.02, 12:56
was passiert, wenn du dein Script direkt in der Konsole aufrufst?

verve
06.10.02, 16:27
@termito

Ich hab leider keinen cgi testscript.
Ich hab nur ein Server, auf den die User sachen hochladen u.a. auch CGI-Skripte!
Und die sagen mir dass sie immer ein Fehler bekommen!
Entschuldigung für meine Dummheit (bin noch ganz neu) aber wie erstelle ich ein cgi-Testskript?

greetings

verve

termito
06.10.02, 18:29
ich mein nur, kannst du die Scripte deiner User auch direkt von der Konsole aus starten?
so z.B.
#/usr/lib/cgi-bin/sysinfo.cgi

Wo liegen überhaupt die Scripte deiner User,... in den homes ?
Wenn ja, dann musst du da cgi in der httpd.conf aktivieren
z.B. unter public_html

Wichtig ist natürlich auch, dass du mit chmod die Scripte ausführbar machst.

Die Ursache für dein Problem ist vielfältig, am besten benutze mal die Suchfunktion und lies dir das ein wenig durch, dann wirst du bestimmt eine Antwort zu deinem Problem finden.
click here (http://www.linuxforen.de/forums/search.php?s=&action=showresults&searchid=301783&sortby=lastpost&sortorder=descending)

verve
06.10.02, 18:44
danke termito!
Ich versuch es mal!
Danke für deine Hilfe, aber ich schätze jetzt muss ich mich da wohl selbst durcharbeiten!
(Man-Pages sind das schlimmste, was es gibt)!!

greetings

verve

Pingu
06.10.02, 19:13
Hi,

erste mal als Frage: Über was reden wir, wenn wir über CGI reden? Über PERL Skripte, Shell Skripte, Ruby, Phyton, PHP, ......

Wenn es PERL Skripte sind:

Du sagst Deine User laden rüber .... hhmmmm .... Haben die vielleicht Windows im Einsatz?? Weil der PERL Interpreter hat sich etwas mit den Zeilenende zeichen, d.h. er möchte ein schönes einfaches LF, kein CR, kein CR/LF und auch kein LF/CR. -> kleiner Fehler große Wirkung.

-= Pingu =-

verve
06.10.02, 19:50
@Pingu

es sind vornehm Perl -und Php-Skripte dabei!
Und ja, die Mehrzahl der User (fast alle) hat wohl Windows!
Was müsste ich denn da umstellen um den Pfad Interpreter-Pfad korrekt zu setzen?

greetings

verve

Pingu
06.10.02, 21:25
Es müssen alle CR (Carriage Return, #13, Wagenrücklauf) aus den PERL Skripten raus.
Es dürfen nur LF (Line Feed, #10, Seitenvorschub) als Zeilenendekennung in den PERL Skripten verwendet werden.
Aber das hatte ich ja alles schon geschrieben.

Dafür gibt's Tools wie die gerade heissen weiß ich nicht, da ich alle meine Editoren (GoLive, Apple Developer Studio) eingestellt habe nur LF als Zeilenende zu schreiben und emacs, pico, nano, vi schreiben ja sowieso nur LF als Zeilenende. emacs kann auch konvertieren, ist aber etwas umständlich (Datei öffnen, Mule auf z.B. ISO-8859-1-unix umstellen und zurück speichern).

-= Pingu =-