Axel: CGI Skript wird ohne Parameter interpretiert mit nicht(Apache)

Hallo,

ich habe einen Apache 2.0 Sever unter Windows 2000 laufen. Die CGI Skripte werden, wenn sie keine Parameterübergabe haben interpretiert und alles funktioniert wunderbar. Wenn Sie Parameter haben, dann sieht man nur den Quellcode.
Beispiel:

../gast/cgi-bin/buch.cgi  -  geht Skript wird interpretiert

../gast/cgi-bin/buch.cgi?show&0   -  geht nicht

Kann jemand mir helfen? Ich denke, dass eine Option im Apache nicht richtig eingestellt ist.

Gruß,
Axel

  1. morgens,

    ../gast/cgi-bin/buch.cgi  -  geht
    ../gast/cgi-bin/buch.cgi?show&0   -  geht nicht
    Kann jemand mir helfen? Ich denke, dass eine Option im Apache nicht richtig eingestellt ist.

    Das denke ich nicht. Der Fehler wird in deinem Script liegen. Wie hast du denn festgelegt, ob und wie überhaupt dieses Parameter berücksichtigt werden sollen? Ohne ein Stückchen relevanten Code werden wir da da nicht viel weiter kommen, glaube ich.

    Grüße aus Berlin

    Christoph S.

    1. » Das denke ich nicht. Der Fehler wird in deinem Script liegen. Wie hast du denn festgelegt, ob und wie überhaupt dieses Parameter berücksichtigt werden sollen? Ohne ein Stückchen relevanten Code werden wir da da nicht viel weiter kommen, glaube ich.

      Unter Microsoft information Server hat das Script funktioniert, aber da wir aus Sicherheitsgründen auf dem Apache umgestiegen sind, läuft es nicht mehr anständig.

      Also hier die wichtigen Codeabschnitte
      #!c:/perl/bin/perl.exe

      #Ermittlung und Wechsel in das aktuelle Verzeichnis (CGI)
       $base_dir = rindex ($0, "\") ;
       $base_dir = rindex ($0, "/") if ($base_dir < 0) ;
       $script_dir = substr( $0, 0, $base_dir) ;
       chdir($script_dir) ;

      ############################################################################
      #Variablendefinition
      ############################################################################

      #Ausgabepuffer auschalten, Ausgabe beginnt sofort, nicht erst nach
      #Beendigung des Scripts
       $| = 1 ;

      #Datenverzeichnis für CGI (ausgehend vom CGI-Verzeichnis)
       $data_dir = "./data" ;

      #Gästebuch-Datenfile
       $dat_file = "$data_dir/gaeste.txt" ;

      #Schablone für das HTML-Design der Einträge
       $html_templ = "$data_dir/gast.tmpl" ;

      #Name und WWW-Adresse des GÄSTEBUCH-Scriptes
       $cgi_www="www.test.de/gast/cgi-bin/buch.cgi";  //habe ich
      // verändert fürs Forum, sind aber richtig

      #Grafikpfad-absolut (URL)
       $pic_dir="www.test.de/gast/pics" ;   //habe ich
      // verändert fürs Forum, sind aber richtig

      #Schriftart
       $font = "Standard" ;

      #Titel des Gästebuches
       $title="Gästebuch von Abitur! Und dann?" ;

      #Anzeige pro Seite (alles auf eine Seite: 100000 :-)) )
       $anzen=5 ;
       $anzan=$anzen ;

      #max. Länge (in Zeichen)für Gästebucheintrag (0 für keine Begrenzung)
       $max_length=100 ;

      #Restanzeigeberechnung, dh die in $anzen spezifierte Anzahl
      #pro Seite wird mind. eingehalten, dh ist von Vorteil, wenn
      #man nicht möchte, da zB auf der letzten Seite nur ein Eintrag
      #steht. Man allerdings fast keinen Einfluß auf die angezeigte
      #Menge. ZB werden bei $anzen=20 erst ab dem 40 Eintrag 2 Seiten
      #angezeigt. (1=ja / 0=nein)
       $rest_show=1 ;

      #File-Locking 0 für nein (WinXX)/1 für ja
       $lock=0 ;

      #Zeitverschiebung in Stunden (-/+ möglich)
       $zeitverH=0 ;

      #Mail an Admin bei neuem Eintrag
      #1=ja / 0=nein
       $adminmail=0 ;

      #Für Mailfunktion
      #0=Mail verschicken per sendmail
      #1=Mail in Datenverzeichnis schreiben
       $offline=0 ;

      #Mailprogramm (nur Unix)
       $mailprog = "/usr/lib/sendmail" ;

      #Mailempfänger
       $webmaster = "mail@Webmaster.de" ;

      #Paßwort für den Admin(Lösch)modus (unbedingt ändern)
       $pw = "pinguin" ;

      ############################################################################
      #Programmablauf
      ############################################################################

      @para = split(/&/ , $ENV{'QUERY_STRING'}) ;
      $para[0]="" if !$para[0] ;
      $para[1]=0  if !$para[1] ;

      if ($para[0] eq "show" || $para[0] eq "admin") {

      &read_data() ;
       &htmlhead ;
       &show($para[1]) ;
       &htmlfoot ;

      } elsif ($para[0] eq "form") {

      &read_data() ;
       &htmlhead2 ;
       &sign_form() ;

      } elsif ($para[0] eq "new") {

      &datum_zeit() ;
       &new() ;
       print "Location: $cgi_www?show\n\n" ;

      } elsif ($para[0] eq "del") {

      &del() ;
       print "Location: $cgi_www?show&$FM{'showid'}\n\n" ;

      } elsif ($para[0] eq "redir") {

      &redir() ;

      } else {

      &read_data() ;
       &htmlhead ;
       &show('0') ;
       &htmlfoot ;
      }