Stephan: Ausführen auf UNIX-Server

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

            1. 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

    2. 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