Roland Plank: Server Fehlermeldung

Hallo.

Es ist zum Verrücktwerden.
Jetzt hab ich endlich als CGI-Neuling ein Such-Skript, aber der Server gibt die 500er Fehlermeldung. Auf meinem lokalen Webserver funtioniert es einwandfrei, aber auf dem öffentl. Webserver geht nix.
Die Shebangzeile ist in Ordnung, die Rechte stimmen und im richtigen Modus hochgeladen.
Wie kann das nur sein, wenn auf meinem lokalen Webserve das Skript geht, aber auf dem Server nicht? Ein Syntaxfehler würde doch auch auf meinem Rechner eine Fehlermeldung erzeugen.

Grüße Roland

  1. Hallo.

    Hm. Eien Fehlermeldung wirst Du wohl nicht haben.
    Ist 1&1 der Hoster ?
    Die haben einen Syntax- Checker. Im Konfigurationsmenü...

    fastix

    1. Danke für deine Antwort

      Diese Fehlermeldung:

      Error: Server Error
      We're sorry, but we are experiencing technical difficulties.
      Server returned HTTP Error 500: Service Unavailable.

      Bin leider ein CGI-Neuling und kenne 1&1 nicht, ich habe eine Unix-Server der Deutschen Telekom.

      1. Hallo Roland,

        Diese Fehlermeldung:

        Error: Server Error
        We're sorry, but we are experiencing technical difficulties.
        Server returned HTTP Error 500: Service Unavailable.

        diese Fehlermeldung hilft nicht wirklich weiter. Welche Fehlermeldung steht in der deiner Logdatei? Kommst du überhaupt an die Logdateien ran?
        Welche Programmiersprache nutzt du?

        Grüße,

        Peter

        1. Hi

          Welche Programmiersprache nutzt du?

          wenn er was von "shebang" sagt, dann wird es wohl Perl sein.

          Bye
          Timothy

          --
          Zwei Dinge im Leben kannst du nicht zurück holen. Den Pfeil, den du verschossen. Und das Wort, das du gesprochen.
          (alte indianische Weisheit)
          1. Hallo.

            Welche Programmiersprache nutzt du?
            wenn er was von "shebang" sagt, dann wird es wohl Perl sein.

            OK, also sehr wahrscheinlich PERL.
            Also: Roland schau mal ob in deinem Script irgendwo "use CGI;" steht. Wenn ja dann schreib mal in die Zeile darunter "use CGI::Carp(fatalsToBrowser);". Probier nochmal das Script aufzurufen - du solltest jetzt, wenn dein Problem mit PERL zu tun hat, eine etwas informativere Fehlermeldung sehen.

            Grüße,

            Peter

            1. Alternativ: kannst Du das script vielleicht auch via Telnet oder SSL- Verbindung ausführen?

              Dann bekommst Du auch Fehlermeldungen.

              Alternative:

              http://www.fastix.de/com.zip

              enthält ein Perl-Skript, mit welchem Du, ähnlich wie in Telnet, Shell- Befehle eingeben kannst.

              Du musst die ersten Zeilen anpassen:

              Shebang auswählen (Windows/Unix)
              Passwort vergeben

              Das Skript auf dem Server ablegen.

              http://deinedomain/com.pl im Browser aufrufen.

              Dann kannst Dein Skript aufrufen und die Fehlermeldungen/Ausgaben lesen.

              fastix

              1. Alternativ: kannst Du das script vielleicht auch via Telnet oder SSL- Verbindung ausführen?

                Äh... SSH- Verbindungen aufbauen... solte das wohl heissen.

                fastix

                1. Herzlichen vielen Dank für Eure Hilfe.

                  Leider hab ich mit lauter "herum-murkserei" das wichtigste vergessen:

                  print "Content-type: text/html\n\n"

                  Jetzt klappt's.
                  Nochmals vielen Dank für Eure Vorschläge.
                  Werde Euch sicherlich wieder mal belästigen müssen ;-))

                  Grüße

                  Roland

              2. hallo fastx,

                http://www.fastix.de/com.zip
                enthält ein Perl-Skript, mit welchem Du, ähnlich wie in Telnet, Shell- Befehle eingeben kannst.

                Hab ich doch natürlich sofort ausprobiert. Aber ich kriege sofort etwas, was ich bei anderen PERL-Scripts noch nie gehabt habe: eine Abfrage, ob ich speichern oder öffnen möchte. Wenn ich auf Abbrechen klicke, erscheint das kleine Eingabeformular, aber sobald ich dort irgendeinen Shell-Befehl tippe, kommt wieder die ungewöhnliche Abfrage, ob ich speichern möchte.

                Fehlermeldungen (ziemlich ausführlich):
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::CGI" used only once: possible typo at I:\cgi-bin\com.pl line 138., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::loc" used only once: possible typo at I:\cgi-bin\com.pl line 28., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::enterpassword" used only once: possible typo at I:\cgi-bin\com.pl line 8., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Use of uninitialized value in concatenation (.) or string at I:\cgi-bin\com.pl line 54., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::CGI" used only once: possible typo at I:\cgi-bin\com.pl line 138., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Use of uninitialized value in concatenation (.) or string at I:\cgi-bin\com.pl line 54., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::loc" used only once: possible typo at I:\cgi-bin\com.pl line 28., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::enterpassword" used only once: possible typo at I:\cgi-bin\com.pl line 8., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Use of uninitialized value in quoted execution (``, qx) at I:\cgi-bin\com.pl line 93., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::CGI" used only once: possible typo at I:\cgi-bin\com.pl line 138., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::loc" used only once: possible typo at I:\cgi-bin\com.pl line 28., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Name "main::enterpassword" used only once: possible typo at I:\cgi-bin\com.pl line 8., referer: http://pc1/cgi-bin/com.pl
                [Fri Mar 07 03:14:56 2003] [error] [client 192.168.0.1] Use of uninitialized value in concatenation (.) or string at I:\cgi-bin\com.pl line 72., referer: http://pc1/cgi-bin/com.pl

                Das ist durchgängig "unspezifisch". Kannst du erklären, was dein Skript eigentlich liefern soll?

                Andere (PERL)-Scripts im selben cgi-bin machen solche Probleme nicht

                Grüße aus Berlin

                Christoph S.

                1. Hi folks»» hallo fastx,

                  Aber ich kriege sofort etwas, was ich bei anderen PERL-Scripts noch nie gehabt habe: eine Abfrage, ob ich speichern oder öffnen möchte. Wenn ich auf Abbrechen klicke, erscheint das kleine Eingabeformular, aber sobald ich dort irgendeinen Shell-Befehl tippe, kommt wieder die ungewöhnliche Abfrage, ob ich speichern möchte.

                  Muß wohl uirgendwie an Deiner Installation liegen. Bei mir (WINXP/Apache/Perl 5.6) läuft es "normal".

                  Bye
                  Timothy

                  --
                  Zwei Dinge im Leben kannst du nicht zurück holen. Den Pfeil, den du verschossen. Und das Wort, das du gesprochen.
                  (alte indianische Weisheit)
                2. Moin.

                  Wie wäre es damit:
                  ACHTUNG, die Installation stellt ein Sicherheitsrisiko dar!!!

                  #!/usr/bin/perl
                  use CGI;
                  ####################################################################
                  #Telnet oder so ;-)
                  #führt die in param('command') stehenden commands aus!
                  $url_to_script=$ENV{'SCRIPT_URI'};
                  #ggf url selbst setzten, falls SCRIPT_URI vom Server nicht gesetzt #wird
                  ####################################################################

                  #Check, ob REMOTE_USER leer --> nicht erlaubt!!!!!
                  #geht nur, wenn script in geschützem Bereich liegt (.htaccess)
                  #ansonsten die folgende Zeile ausblenden - RISIKO!!!
                  &not_allowed unless $ENV{'REMOTE_USER'};
                  $query = new CGI;
                  $command = $query -> param('command');
                  $output = $command;
                  $output =~ s/(\r\n)|(\n)/<BR>/g;
                  while($output =~ /_/)
                  {
                  substr($output,index($output,"_"))="<B>".substr($output,index($output,"_")+2,1)."</B>".substr($output,index($output,"_")+3);
                  }
                  $output =~ s/_//sg;
                  $output =~ s/+o/&ordm;/sg;
                  $output =~ s/.//sg;
                  print "Content-type: text/html\n\n";
                  print "<html><head><title>Telnet</title></head>";
                  print "<body>";
                  print "<pre>";
                  print "<form name="Telnet" action="$url_to_script" method="GET">";
                  print "<input type="text" name="command" size="60" value="$command">";
                  print "<input type="submit" value="submit">";
                  print "</form>";
                  print "<script language="JavaScript">";
                  print "   document.Telnet.command.focus();";
                  print "   document.Telnet.command.select();";
                  print "  </script>";
                  print "Return Code:$?<BR>\n";
                  print "$command<BR>$output<P>\n";
                  print "</body>";
                  print "</html>";

                  ####################################################################
                  sub not_allowed {

                  print "Content-type: text/html\n\n";
                  print "<html><head><title>Error during execution</title></head>";
                  print "<body>";
                  print "<H1>Error during execution</H1>";
                  print "You are not authorized to run this script - Access denied!<P>";
                  print "Bye!";
                  print "</body>";
                  print "</html>";
                  exit;
                  }

                  Gruß Frank

                3. hallo fastx,

                  Hm. Untypisch ist gut. Das Skript ist nicht von mir, habe es in ähnlicher Situation mal "gespendet" bekommen, aber ich kann es ja noch einmal durchlesen :)

                  Hast Du es konfiguriert? Passwort in die dritte oder vierte Zeile eingegeben?

                  Was das Skript macht:

                  Beim ersten Aufruf erzeugt es eine Passwortabfrage. (Formular)
                  (Sub login)

                  Dann wenn das Passwort stimmt erzeugt es ein Frameset.
                  (Sub MainFrame)

                  Die Fenster werden wieder von dem Skript "gefüllt":
                  Einmal eine Ausgabeseite (Sub Command) und einmal ein mal ein Formular zur Eingabe des Systemkommandos. (Sub BottomFrame)

                  Die Verzweigung im Programm erfolgt über Flagvariablen.

                  Wenn jetzt ein System-Kommando eingegeben und abgeschickt wird, dann wird dieses ausgeführt und die Ausgaben werden im oberen Frame zurückgegeben.

                  Aber, was da bei Dir nicht laufen will... da komme ich so schnell nicht drauf.

                  fastix