Ausführen auf UNIX-Server
Stephan
- cgi
0 Thomas0 Stephan0 Crysu Reshif0 Stephan0 Crysu Reshif0 Stephan
0 Frank S.
Hallo Forum,
hallo meine Freunde und Helfer,
Ich habe nun ein CGI-Script gebastelt, was auf meinem localhost (OmniHTTPd 2.04) problemlos läuft...
Sobald ich es aber auf einen UNIX-Server hochlade, krieg ich diese Meldung:
-----
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
-----
das Script sieht so aus (ist im UNIX-Format):
-----
$Wertestring = $ENV{'QUERY_STRING'};
@Wertepaare = split(/&/, $Wertestring);
foreach $Paar (@Wertepaare) {
($Name, $Wert) = split(/=/, $Paar);
$PARAM{$Name} = $Wert;
}
open(DAT,"<url.txt") die "kann url.txt nicht lesen";
while(<DAT>)
{
($key,$value) = split(//,$_);
$URL{$key} = $value;
}
close DAT;
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE> CGI-Test </TITLE>\n";
print "</HEAD>\n";
print "<font face="arial" size="+3">Werte: $PARAM{'Wert1'}, $PARAM{'Wert2'}</font><br>\n";
print "<font face="arial" size="+3">URL: $URL{'URL'}</font><br>\n";
print "</BODY>\n";
print "</HTML>\n";
-----
dateiattribute für unterverzeichnis im cgi-bin und die cgi-datei: 755 (rwx r-x r-x)
Was hab ich noch falsch gemacht?
Danke an alle, die mir bisher geholfen haben und es noch(einmal) machen
Stephan
Hallo Forum,
hallo meine Freunde und Helfer,Ich habe nun ein CGI-Script gebastelt, was auf meinem localhost (OmniHTTPd 2.04) problemlos läuft...
Sobald ich es aber auf einen UNIX-Server hochlade, krieg ich diese Meldung:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.das Script sieht so aus (ist im UNIX-Format):
$Wertestring = $ENV{'QUERY_STRING'};
@Wertepaare = split(/&/, $Wertestring);
foreach $Paar (@Wertepaare) {
($Name, $Wert) = split(/=/, $Paar);
$PARAM{$Name} = $Wert;
}open(DAT,"<url.txt") die "kann url.txt nicht lesen";
while(<DAT>)
{
($key,$value) = split(//,$_);
$URL{$key} = $value;
}
close DAT;print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE> CGI-Test </TITLE>\n";
print "</HEAD>\n";
print "<font face="arial" size="+3">Werte: $PARAM{'Wert1'}, $PARAM{'Wert2'}</font>
\n";
print "<font face="arial" size="+3">URL: $URL{'URL'}</font>
\n";
print "</BODY>\n";
print "</HTML>\n";dateiattribute für unterverzeichnis im cgi-bin und die cgi-datei: 755 (rwx r-x r-x)
Versuch mal 777 !
Was hab ich noch falsch gemacht?
Danke an alle, die mir bisher geholfen haben und es noch(einmal) machen
Stephan
Überprüfe dein Perl-Verzeichnis im Kopf
Es lautet meistens #!usr/bin/perl
Bei Fragen meld dich
MfG Thomas
Hallo Forum,
hallo meine Freunde und Helfer,dateiattribute für unterverzeichnis im cgi-bin und die cgi-datei: 755 (rwx r-x r-x)
Versuch mal 777 !
hab ich jetzt
Überprüfe dein Perl-Verzeichnis im Kopf
Es lautet meistens #!usr/bin/perl
»»
so steht es bei mir jetzt auch (hab bei nem anderen Script, dass schon auf dem Server läuft nachgeschaut, da sieht es auch so aus...)
Aber die Meldung bleibt die selbe :-(
Stephan
Hallo Stephan
Aber die Meldung bleibt die selbe :-(
Wie uebrtraegst du das Script auf den Server?
Scripts muessen im ASCII-Modus uebertragen werden.
Vielleicht ist es das?
Gruss Crysu
Hallo Stephan
Aber die Meldung bleibt die selbe :-(
Wie uebrtraegst du das Script auf den Server?
Scripts muessen im ASCII-Modus uebertragen werden.
Vielleicht ist es das?Gruss Crysu
ja, habs als ASCII rübergespielt...
daran sollte es nicht liegen, es sei denn, es gibt probleme mit CuteFTP...
Stephan
Hallo Stephan
ja, habs als ASCII rübergespielt...
daran sollte es nicht liegen, es sei denn, es gibt probleme mit CuteFTP...
Neee, gibt es nicht, vorrausgesetzt du hast die Dateiendung pl oder cgi in der Configuration eingetragen. Ansonsten musst du die Rueckfrage von CuteFtp anschliessend mit NEIN beantworten, etwas ungewoehnlich....
Ich tippe da eher auf die Datei url.txt
Du hast als Alternative zum Oeffnen die() angegeben, nicht der beste Weg. Wenn das Script stirbt, weil es die Datei nicht finden / oeffnen kann, ist das Ergebnis die logische Fehlermeldung die du siehst. Hier solltest du eine Routine aufrufen, die eine Fehler meldungan den Browser uebergibt.
Zu den Lese / Schreibrechten dieser Datei kann man auch nur raetseln. Erstens gehoert sowas nicht ins cgi-Verzeichnis, zweitens sind je nach Provider 777 oder 600 die richtigen Rechte. (in einem Verzeichnis im $ENV{'DOCUMENT_ROOT'} sprich da, wo deine Indexdatei ist)
Die Einleseroutine ist auch nicht die schoenste, in der Htmlausgabe fehlt das Bodytag, aber das ist wohl alles nicht der_Grund.
Setzt mal in die zweite Zeile deines Scripts folgendes:
use CGI::Carp qw(fatalsToBrowser);
Damit solltest du fuers erste eine aussagekraeftigere Fehlermeldung erhalten.
Lass uns die mal sehen, dann ueberlegen wir weiter.
Gruss Crysu
Hallo,
ich danke dir noch mal ganz herzlich für deine Bemuehungen, aber die Loesung war ganz einfach:
Ich habe nochmal an den Rechten des cgi-bin-Unterverzeichnisses rumgespielt (hinterher waren sie auch wieder 755, wie vorher) und plötzlich gings...
Also nochmal herzlichen Dank
Stephan
Es lautet meistens #!usr/bin/perl
Versuch mal #!/usr/bin/perl
Ohne das "/" vor usr wird der Interpreter relativ von Deinem CGI-Verzeichnis aus gesucht, er soll aber von der Wurzel aus gesucht werden.
Gruß Frank