Torsten Kohlmann: nicht alle cgi's laufen bei mir

Hallo, brauche dringend Hilfe!

hab mir zwecks offline-Testen den neuen Apache-Server installiert. Funzt auch wirklich ganz gut, allerdings mit einer Ausnahme. Sämtliche CGI-Skripte, die ich verwende, funktionieren auf anderen Servern einwandfrei, beim Apache gehen auch alle bis auf eines. Woran kann das liegen?

  1. Hi,

    Woran kann das liegen?

    an allem; vielleicht abgesehen von der Lieblingsspeise des Hundes des Bruders Deines Nachbarn. Aber selbst da kann man nicht sicher sein.

    Was sagt denn das Error-Log?

    Cheatah

    1. Da bin ich wieder,

      zuerst einmal schmeißt Apache Errorcode 500 raus!

      im Errordocument steht:
       [Wed Apr 03 16:32:17 2002] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: d:/sonstiges/html/kjf-ver/cgi-bin/forum/yabb.cgi

      mfG
       kohlmann

      1. Hoi,

        zuerst einmal schmeißt Apache Errorcode 500 raus!

        im Errordocument steht:
        [Wed Apr 03 16:32:17 2002] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: d:/sonstiges/html/kjf-ver/cgi-bin/forum/yabb.cgi

        Das hoert sich so an, als sei der falsche Pfad zur Perl-Executable angegeben
        in der 'yabb.cgi'. Loesung: SheBang aendern oder in der Apache-Config die Wahl
        des Interpreters von SheBang auf Registry umstellen.

        Gruesse aus dem schoenen LH,
         c.j.k

        1. hi,

          Das hoert sich so an, als sei der falsche Pfad zur Perl-Executable angegeben
          in der 'yabb.cgi'. Loesung: SheBang aendern

          JA

          oder in der Apache-Config die Wahl
          des Interpreters von SheBang auf Registry umstellen.

          Willst du mit so einem Ratschlag Michael Schröpl endgültig in den Herzinfarkt treiben ;-)

          BTW: was ist eigentlich mit dem "neuen" Apache gemeint ?

          Christoph S.

          1. Hoi,

            oder in der Apache-Config die Wahl
            des Interpreters von SheBang auf Registry umstellen.
            Willst du mit so einem Ratschlag Michael Schröpl endgültig in den Herzinfarkt
            treiben ;-)

            Warum? Ich halte das lokal fuer eine gute Loesung. So braucht man die Scripts
            vor dem Upload nicht jedesmal anzupassen. Und soweit ich mich erinnere, war das
            auch die von Michael favorisierte Loesung.

            Gruesse aus dem schoenen LH,
             c.j.k

            1. hallo,

              Warum? Ich halte das lokal fuer eine gute Loesung. So braucht man die Scripts
              vor dem Upload nicht jedesmal anzupassen.

              Ich benutze derzeit dieselbe Einstellung lokal.

              Und soweit ich mich erinnere, war das
              auch die von Michael favorisierte Loesung.

              Ich hatte mit ihm hier im Forum vor vielleicht drei Wochen dazu einen interessanten Gedankenaustausch. Oh nein, er "favorisiert" das keinesfalls. Sehr grob zusammengefaßt war seine Argumentation:
              "ScriptInterpreterSource registry" kann Benutzer dazu verleiten, den "shebang" für gänzlich überflüssig zu halten bzw. die Bedeutung dieser Zeile weit zu unterschätzen.

              Grüße aus Berlin
              Christoph S.

              1. danke für eure anregungen, aber daran kann es eigentlich nicht liegen, da allen anderen scripte ohne zu murren laufen.

                Neu heißt übrigens Version 1.3

                mfG
                 kohlmann

                1. hi,

                  danke für eure anregungen, aber daran kann es eigentlich nicht liegen, da allen anderen scripte ohne zu murren laufen.

                  Dann solltest du uns dein "Problemscript" nicht weiter vorenthalten und es einfach mal posten  -  bzw. die Teile davon, die du für relevant hältst.

                  Neu heißt übrigens Version 1.3

                  Nein, das heißt es gewiß nicht. Es wird dann wohl 1.3.24 sein, gelle ? Die hab ich auch (auf WinXP)

                  Christoph S.

                  1. Also, zuerst einmal die entsprechende Stelle in der Apache conf.:     AddHandler cgi-script pl cgi

                    Dann mein Script läuft in der Form z.B. unter OMNIhttpd:

                    #!/usr/bin/perl $YaBBversion = '1 Gold - SP1'; $YaBBplver = '1 Gold - SP1';

                    if( $ENV{'SERVER_SOFTWARE'} =~ /IIS/ ) {  $yyIIS = 1;  $0 =~ m~(.*)(\|/)~;  $yypath = $1;  $yypath =~ s~\~/~g;  chdir($yypath);  push(@INC,$yypath); }

                    Requirements and Errors

                    use CGI qw(header cookie); # so we can use the header and cookie printing $CGI::HEADERS_ONCE = 1; # Kill redundant headers require "Settings.pl"; require "$language"; require "$sourcedir/Subs.pl"; require "$sourcedir/Load.pl"; require "$sourcedir/Security.pl";

                    Those who write software only for pay should go hurt some other field.

                    - Erik Naggum

                    &LoadCookie;  # Load the user's cookie (or set to guest) &LoadUserSettings; # Load user settings &banning;  # Check for banned people &WriteLog;  # Write to the log &LoadIMs;  # Load IM's if($currentboard ne "") { &LoadBoard; }  # Load board information

                    $SIG{WARN} = sub { &fatal_error( @_ ); }; eval { &yymain; }; if ($@) { &fatal_error("Untrapped Error:<BR>$@"); }

                    sub yymain {

                    Choose what to do based on the form action

                    if ($maintenance == 1 && $action eq 'login2') { require "$sourcedir/LogInOut.pl"; &Login2; } if ($maintenance == 1 && $settings[7] ne 'Administrator') { require "$sourcedir/Maintenance.pl"; &InMaintenance; }

                    Guest can do the very few following actions.

                    if($username eq 'Guest' && $guestaccess == 0) {  if (!(($action eq 'login') || ($action eq 'login2') || ($action eq 'register') || ($action eq 'register2'))) { &KickGuest; } }

                    my $fastfind = substr($action,0,1); #BEGIN FASTFIND IF STATEMENT if( $fastfind eq 'l' ) {  if ($action eq 'login') { require "$sourcedir/LogInOut.pl"; &Login; }  elsif ($action eq 'login2') { require "$sourcedir/LogInOut.pl"; &Login2; }  elsif ($action eq 'logout') { require "$sourcedir/LogInOut.pl"; &Logout; }  elsif ($action eq 'lock') { require "$sourcedir/LockThread.pl"; &LockThread; } #END FASTFIND L* } if( $fastfind eq 'd' ) {  if ($action eq 'display') { require "$sourcedir/Display.pl"; &Display; }  elsif ($action eq 'detailedversion') { require "$sourcedir/Admin.pl"; &ver_detail; }  elsif ($action eq 'deletemultimembers') { require "$sourcedir/Admin.pl"; &DeleteMultiMembers; }  elsif ($action eq 'do_clean_log') { require "$sourcedir/Admin.pl"; &do_clean_log; } #END FASTFIND D* } elsif( $fastfind eq 'm' ) {  $fastfind = substr($action,1,1);  if( $fastfind eq 'o' ) {      if ($action eq 'modify') { require "$sourcedir/ModifyMessage.pl"; &ModifyMessage; }   elsif ($action eq 'modify2') { require "$sourcedir/ModifyMessage.pl"; &ModifyMessage2; }   elsif ($action eq 'modtemp') { require "$sourcedir/AdminEdit.pl"; &ModifyTemplate; }   elsif ($action eq 'modtemp2') { require "$sourcedir/AdminEdit.pl"; &ModifyTemplate2; }   elsif ($action eq 'modagreement') { require "$sourcedir/AdminEdit.pl"; &ModifyAgreement; }   elsif ($action eq 'modagreement2') { require "$sourcedir/AdminEdit.pl"; &ModifyAgreement2; }   elsif ($action eq 'modsettings') { require "$sourcedir/AdminEdit.pl"; &ModifySettings; }   elsif ($action eq 'modsettings2') { require "$sourcedir/AdminEdit.pl"; &ModifySettings2; }   elsif ($action eq 'modmemgr') { require "$sourcedir/AdminEdit.pl"; &EditMemberGroups; }   elsif ($action eq 'modmemgr2') { require "$sourcedir/AdminEdit.pl"; &EditMemberGroups2; }   elsif ($action eq 'movethread') { require "$sourcedir/MoveThread.pl"; &MoveThread; }   elsif ($action eq 'movethread2') { require "$sourcedir/MoveThread.pl"; &MoveThread2; }   elsif ($action eq 'modifycatorder') { require "$sourcedir/ManageCats.pl"; &ReorderCats; }   elsif ($action eq 'modifycat') { require "$sourcedir/ManageCats.pl"; &ModifyCat; }   elsif ($action eq 'modifyboard') { require "$sourcedir/ManageBoards.pl"; &ModifyBoard; } #END FASTFIND MO*  }  else {   if ($action eq 'markasread') { require "$sourcedir/MessageIndex.pl"; &MarkRead; }   elsif ($action eq 'markallasread') { require "$sourcedir/BoardIndex.pl"; &MarkAllRead; }   elsif ($action eq 'managecats') { require "$sourcedir/ManageCats.pl"; &ManageCats; }   elsif ($action eq 'mailing') { require "$sourcedir/Admin.pl"; &MailingList; }   elsif ($action eq 'membershiprecount') { require "$sourcedir/Admin.pl"; &AdminMembershipRecount; }   elsif ($action eq 'mlall') { require "$sourcedir/Memberlist.pl"; &MLAll; }   elsif ($action eq 'mlletter') { require "$sourcedir/Memberlist.pl"; &MLByLetter; }   elsif ($action eq 'mltop') { require "$sourcedir/Memberlist.pl"; &MLTop; }   elsif ($action eq 'manageboards') { require "$sourcedir/ManageBoards.pl"; &ManageBoards; }   elsif ($action eq 'ml') { require "$sourcedir/Admin.pl"; &ml; } #END FASTFIND M*  } } elsif( $fastfind eq 'p' ) {  if ($action eq 'post') { require "$sourcedir/Post.pl"; &Post; }  elsif ($action eq 'post2') { require "$sourcedir/Post.pl"; &Post2; }  elsif ($action eq 'print') { require "$sourcedir/Printpage.pl"; &Print; }  elsif ($action eq 'profile') { require "$sourcedir/Profile.pl"; &ModifyProfile; }  elsif ($action eq 'profile2') { require "$sourcedir/Profile.pl"; &ModifyProfile2; } #END FASTFIND P* } elsif( $fastfind eq 'r' ) {  if ($action eq 'register') { require "$sourcedir/Register.pl"; &Register; }  elsif ($action eq 'register2') { require "$sourcedir/Register.pl"; &Register2; }  elsif ($action eq 'reminder') { require "$sourcedir/LogInOut.pl"; &Reminder; }  elsif ($action eq 'reminder2') { require "$sourcedir/LogInOut.pl"; &Reminder2; }  elsif ($action eq 'removethread') { require "$sourcedir/RemoveThread.pl"; &RemoveThread; }  elsif ($action eq 'recent') { require "$sourcedir/Recent.pl"; &RecentPosts; }  elsif ($action eq 'removeoldthreads') { require "$sourcedir/RemoveOldThreads.pl"; &RemoveOldThreads; }  elsif ($action eq 'reorderboards') { require "$sourcedir/ManageBoards.pl"; &ReorderBoards; }  elsif ($action eq 'reorderboards2') { require "$sourcedir/ManageBoards.pl"; &ReorderBoards2; }  elsif ($action eq 'rebuildmemlist') { require "$sourcedir/Admin.pl"; &RebuildMemList; } #END FASTFIND R* } elsif( $fastfind eq 'i' ) {  if ($action eq 'im') { require "$sourcedir/InstantMessage.pl"; &IMIndex; }  elsif ($action eq 'imprefs') { require "$sourcedir/InstantMessage.pl"; &IMPreferences; }  elsif ($action eq 'imprefs2') { require "$sourcedir/InstantMessage.pl"; &IMPreferences2; }  elsif ($action eq 'imoutbox') { require "$sourcedir/InstantMessage.pl"; &IMOutbox; }  elsif ($action eq 'imremove') { require "$sourcedir/InstantMessage.pl"; &IMRemove; }  elsif ($action eq 'imsend') { require "$sourcedir/InstantMessage.pl"; &IMPost; }  elsif ($action eq 'imsend2') { require "$sourcedir/InstantMessage.pl"; &IMPost2; }  elsif ($action eq 'imremoveall') { require "$sourcedir/InstantMessage.pl"; &KillAll; }  elsif ($action eq 'icqpager') { require "$sourcedir/ICQPager.pl"; &IcqPager; }  elsif ($action eq 'ipban') { require "$sourcedir/Admin.pl"; &ipban; }  elsif ($action eq 'ipban2') { require "$sourcedir/Admin.pl"; &ipban2; } #END FASTFIND I* } elsif( $fastfind eq 'c' ) {  if ($action eq 'createcat') { require "$sourcedir/ManageCats.pl"; &CreateCat; }  elsif ($action eq 'clean_log') { require "$sourcedir/Admin.pl"; &clean_log; } #END FASTFIND C* } elsif( $fastfind eq 'n' ) {  if ($action eq 'notify') { require "$sourcedir/Notify.pl"; &Notify; }  elsif ($action eq 'notify2') { require "$sourcedir/Notify.pl"; &Notify2; }  elsif ($action eq 'notify3') { require "$sourcedir/Notify.pl"; &Notify3; }  elsif ($action eq 'notify4') { require "$sourcedir/Notify.pl"; &Notify4; } #END FASTFIND N* } elsif( $fastfind eq 's' ) {  if ($action eq 'setsmp') { &setsmp; }  elsif ($action eq 'sendtopic') { require "$sourcedir/SendTopic.pl"; &SendTopic; }  elsif ($action eq 'sendtopic2') { require "$sourcedir/SendTopic.pl"; &SendTopic2; }  elsif ($action eq 'setcensor') { require "$sourcedir/AdminEdit.pl"; &SetCensor; }  elsif ($action eq 'setcensor2') { require "$sourcedir/AdminEdit.pl"; &SetCensor2; }  elsif ($action eq 'search') { require "$sourcedir/Search.pl"; &plushSearch1; }  elsif ($action eq 'search2') { require "$sourcedir/Search.pl"; &plushSearch2; }  elsif ($action eq 'setreserve') { require "$sourcedir/AdminEdit.pl"; &SetReserve; }  elsif ($action eq 'setreserve2') { require "$sourcedir/AdminEdit.pl"; &SetReserve2; }  elsif ($action eq 'showclicks') { require "$sourcedir/Admin.pl"; &ShowClickLog; }  elsif ($action eq 'shownotify') { require "$sourcedir/Notify.pl"; &ShowNotifications; }  elsif ($action eq 'stats') { require "$sourcedir/Admin.pl"; &FullStats; }  elsif ($action eq 'sticky') { require "$sourcedir/Subs.pl"; &Sticky; } #END FASTFIND S* } else {  if ($action eq 'viewprofile') { require "$sourcedir/Profile.pl"; &ViewProfile; }  elsif ($action eq 'viewmembers') { require "$sourcedir/Admin.pl"; &ViewMembers; }  elsif ($action eq 'addboard') { require "$sourcedir/ManageBoards.pl"; &CreateBoard; }  elsif ($action eq 'admin') { require "$sourcedir/Admin.pl"; &Admin; }  elsif ($action eq 'boardrecount') { require "$sourcedir/Admin.pl"; &AdminBoardRecount; }  elsif ($action eq 'editnews') { require "$sourcedir/AdminEdit.pl"; &EditNews; }  elsif ($action eq 'editnews2') { require "$sourcedir/AdminEdit.pl"; &EditNews2; }  elsif ($action eq 'usersrecentposts') { require "$sourcedir/Profile.pl"; &usersrecentposts; }  elsif ($action =~  /'(\S\)+\Sa\S/) { &decode; } #END FASTFIND * } #END FASTFIND IF STATEMENT

                    No board? Show BoardIndex

                    if ($currentboard eq "") { require "$sourcedir/BoardIndex.pl"; &BoardIndex; }

                    No action? Show MessageIndex

                    require "$sourcedir/MessageIndex.pl"; &MessageIndex;

                    exit; }

                    1. Hoi,

                      Dann mein Script läuft in der Form z.B. unter OMNIhttpd:

                      Der schaut ja auch nicht auf die SheBang ;-)

                      #!/usr/bin/perl

                      Das ist IMHO das Problem. Aendere das mal in #!c:/perl/bin/perl.exe (oder wo
                      sonst du auch Perl installiert hast), und ich denke, es wird laufen.

                      Gruesse aus dem schoenen LH,
                       c.j.k

                      1. jungs, ihr seid einfach göttlich,

                        es läuft jetzt! Warum steht auch nirgens bei, dass die Verarbeitung über die registry nur funktioniert, wenn die Datei auf .pl endet

                        Danke noch einmal

                        mfG
                         kohlmann

                        1. oha,

                          jungs, ihr seid einfach göttlich,

                          danke, das ist ein neuer Zungenschlag, aber trotzdem:

                          Warum steht auch nirgens bei, dass die Verarbeitung über die registry nur funktioniert, wenn die Datei auf .pl endet

                          weil das leider _wörtlich_ so nicht ganz korrekt ist und man den registry-Mechanismus dazu verstehen muß: in der registry ist unter anderem festgehalten, welche Dateinamensendung mit welchem Programm verknüpft wird  -  und bei einer Perl-Installation mit dem msi-Paket von ActiveState wird PL eben der perl.exe zugeordnet. Genau diesen Eintrag liest nun der Indianer aus, wenn dieser registrysource....-Eintrag in der httpd.conf drinsteht.
                          Nun kannst du aber auf die Idee kommen, auch CGI mit Perl.exe zu verknüpfen. Wenn du das machst, klappts auch mit Dateinamensendung CGI, und im Extremfall könntest du ein Script "script.torsten" ebenfalls ausführen lassen, wenn du die entsprechende Verknüpfung in die registry schreibst.
                          "default" ist aber auf einer Windows-Kiste eben nur "pl" der perl.exe zugeordnet.
                          Solche Tricks lassen sich übrigens auch auf einer LINUX-Maschine zurechtbasteln, hab ich gelesen (aber noch nicht durchprobiert)  -  selbstverständlich auf etwas anderem Weg, weil es da ja sachließlich keine registry gibt. Es scheint so, als ob die "shebang", die eine Ikone bei der Perl-Programmierung darstellt, ganzganz langsam ihrem stillen Ende entgegensieht.

                          Danke noch einmal

                          bittesehr

                          Christoph S.

                          1. naja, auch .cgi sind bei mir in der registry perl.exe zugeordnet wodran liegt es also?

                          2. Hi Christoph,

                            Es scheint so, als ob die "shebang", die eine Ikone bei der Perl-
                            Programmierung darstellt, ganzganz langsam ihrem stillen Ende
                            entgegensieht.

                            Was hat die shebang mit Perl zu tun?
                            Und wann stirbt UNIX komplett aus (wie Du gerade postuliert hast)?

                            Viele Grüße
                                  Michael

                            1. menno, du erwischst mich aber auch jedesmal ...

                              dabei weißt doch ganz genau, was ich gemeint hab ;-)

                              Was hat die shebang mit Perl zu tun?

                              auf direktem Weg gar nix. Bei einer CGI-"Bestimmung" grade mal so viel, daß sie auch auf das Perl-Programm (die Vokabel "Programm" benutze ich hier, weil wir über ein auf WindowsXP eingesetztes Script philosophiert haben) hinweisen darf.

                              Und wann stirbt UNIX komplett aus (wie Du gerade postuliert hast)?

                              Neee, postuliert  -  also im Wortsinn als "zu fordernd vorausgesetzt"  -  habe ich gar nix. Und, ehrlich gestanden, in dem Moment auch nicht an die glanzvolle Unix-Welt gedacht. Aber wenn wir bei deiner Frage bleiben wollten: "aussterben" würde UNIX erst dann, wenn sich die Microsoft-Idee, daß man shell-Scripts auch ohne diese Ikone schreiben kann, als Grundsatz für sämtliche UNIX-Systeme durchsetzt. Die shebang selbst wäre aber auch in einem solchen Fall noch nicht endgültig auf allen Gebieten verschwunden, weil es hinterlistigerweise solche Sprachen wie TCL gibt, die sie sogar unter WindowsXP für unverzichtbar halten.

                              "verschwinden" könnte sie allerdings in ein paar Jahren aus den Mechanismen, mit denen die Arbeitsweise von CGI beeinflußt werden kann. Siehe http://cgi-doc.virtualave.net und  http://hoohoo.ncsa.uiuc.edu/cgi/intro.html und ...

                              Grüße aus Berlin

                              Christoph S.

                              1. Hi Christoph,

                                menno, du erwischst mich aber auch jedesmal ...

                                das ist mein Job - dafür werde ich bezahlt.

                                dabei weißt doch ganz genau, was ich gemeint hab ;-)

                                Ja, und? Ist das von irgend einer Relevanz? ;-)

                                "aussterben" würde UNIX erst dann, wenn sich die Microsoft-Idee,
                                daß man shell-Scripts auch ohne diese Ikone schreiben kann,

                                Man kann Shell-Skripte auch jetzt schon ohne diese "Ikone" schreiben,
                                indem man direkt die Shell aufruft und ihr den Namen des Skripts als
                                Parameter übergibt. (Perl ist in diesem Sinn auch eine Shell.)

                                Dann muß der Anwender allerdings wissen, für welche der unzählichen
                                und zueinander inkompatiblen Shells ein Skript geschrieben ist!
                                Genau das erspart ihm die Shebang - das kann kein Windows-artiger
                                Mechanismus ersetzen.

                                Denn um die shebang durch das Konzept der Verknüpfung mit Namens-
                                konventionen zu ersetzen, müßte
                                1. jeder Interpreter eine solche Namenskonvention erfüllen
                                   (damit wären die Namen von Kommandos nicht mehr unabhängig von
                                   deren Implementierungssprache)
                                2. sämtliche dieser Konventionen zueinander disjunkt sein
                                3. auf jedem System ein vollständiges, einheitliches System aller
                                   Verknüpfungen mit allen Sprachen etabliert sein.
                                Letzteres könnte natürlich bei der Installation sämtlicher Sprach-
                                Interpreter automatisch erfolgen (so macht es Windows ja auch, zu
                                meinem Leidwesen - die Zahl der Programme, die sich um die Interpre-
                                tation von "*.html" schlagen, ist kaum noch zu überschauen, dabei
                                will ich immer noch bei einem Doppelklick auf ein HTML-Dokument
                                einfach nur meinen Editor gestartet haben, denn zum Visualisieren
                                des Dokuments in einem Browser spreche ich es über einen URL an,
                                nicht über einen Pfadnamen!).

                                Aber Punkt 1 wäre dadurch nicht entkräftet - Du könntest nicht mehr
                                ein Systemkommando durch ein eigenes Shell-Skript einschalen und
                                ähnliches.

                                Und Punkt 2 ist auch kein Pappenstil - das bedeutet nämlich, daß
                                jeder, der eine neue Konvention etabliert, von sämtlichen weltweit
                                bereits existierenden Konventionen wissen muß ... und was ist, wenn
                                zwei Leute gleichzeitig eine neue Konvention etablieren wollen?
                                (Wer leitet die weltweite Registrierungsinstitution für Endungen?)

                                Gegen Punkt 3 fällt mir übrigens auch gerade etwas ein: Wenn jedes
                                Programm eigene Endungen definieren können muß, um sich auf einem
                                Rechner zu installieren, wer hindert dann ein solches Programm daran,
                                fremde Definitionen zu überschreiben?
                                (Beispielsweise beim Doppelklick auf *.doc den Festplattenformatierer
                                zu starten - wäre doch eine nette Idee, oder? ;-)
                                Beim Shebang-Konzept ist ein Skript alleine dafür verantwortlich,
                                wer es ausführt. Und die Zielverzeichnisse für installierte Software
                                kann ich entsprechenden Benutzerkennungen als owner geben - da kann
                                dann kein Programm eine fremde Installation manipulieren. Wie mache
                                ich das in Windows 98?

                                Micro$oft verläßt sich darauf, daß jeder dieselben Definitionen für
                                Endungen hat. Ist dies nicht der Fall, dann passiert _irgendwas_.
                                Die shebang-Konvention verläßt sich darauf, daß jeder identische
                                Pfade für die Installation bestimmter Interpreter verwendet.
                                Ist dies nicht der Fall, dann gibt es eine klare Fehlermeldung.
                                Letzteres gefällt mir besser.

                                Die Gefahr, daß zufällig zwei Endungen übereinstimmen, halte ich für
                                größer als die Gefahr, daß zufällig zwei verschiedene Interpreter mit
                                vollständig identischen Pfadnamen installiert werden. Denn Endungen
                                werden aus Gründen der usability kurz gehalten - Programmnamen können
                                beliebig lang sein (inzwischen ja sogar länger als 8 Zeichen ... ;-).

                                Viele Grüße
                                      Michael

                                1. Hoi,

                                  1. jeder Interpreter eine solche Namenskonvention erfüllen
                                       (damit wären die Namen von Kommandos nicht mehr unabhängig von
                                       deren Implementierungssprache)
                                  2. sämtliche dieser Konventionen zueinander disjunkt sein
                                  3. auf jedem System ein vollständiges, einheitliches System aller
                                       Verknüpfungen mit allen Sprachen etabliert sein.
                                    Letzteres könnte natürlich bei der Installation sämtlicher Sprach-
                                    Interpreter automatisch erfolgen (so macht es Windows ja auch, zu
                                    meinem Leidwesen - die Zahl der Programme, die sich um die Interpre-
                                    tation von "*.html" schlagen, ist kaum noch zu überschauen, dabei
                                    will ich immer noch bei einem Doppelklick auf ein HTML-Dokument
                                    einfach nur meinen Editor gestartet haben, denn zum Visualisieren
                                    des Dokuments in einem Browser spreche ich es über einen URL an,
                                    nicht über einen Pfadnamen!).

                                  Aber Punkt 1 wäre dadurch nicht entkräftet - Du könntest nicht mehr
                                  ein Systemkommando durch ein eigenes Shell-Skript einschalen und
                                  ähnliches.

                                  Und Punkt 2 ist auch kein Pappenstil - das bedeutet nämlich, daß
                                  jeder, der eine neue Konvention etabliert, von sämtlichen weltweit
                                  bereits existierenden Konventionen wissen muß ... und was ist, wenn
                                  zwei Leute gleichzeitig eine neue Konvention etablieren wollen?
                                  (Wer leitet die weltweite Registrierungsinstitution für Endungen?)

                                  Das das nicht funktioniert, hast du ja selber schon bei Windows bemerkt.

                                  Gruesse aus dem schoenen LH,
                                   c.j.k

                                2. hallo nochmal,

                                  menno, du erwischst mich aber auch jedesmal ...
                                  das ist mein Job - dafür werde ich bezahlt.

                                  oh, das ist mir neu

                                  dabei weißt doch ganz genau, was ich gemeint hab ;-)
                                  Ja, und? Ist das von irgend einer Relevanz? ;-)

                                  für mich auf gewisse Weise schon  -  ich bin schleißlich bereit, den "erzieherischen Effekt" des Forums auf mich einwirken zu lassen und hatte zunehmend den Eindruck, daß ich auf dem besten Weg bin, das, was ich meine, auch zu sagen.

                                  Micro$oft verläßt sich darauf, daß jeder dieselben Definitionen für
                                  Endungen hat. Ist dies nicht der Fall, dann passiert _irgendwas_.
                                  Die shebang-Konvention verläßt sich darauf, daß jeder identische
                                  Pfade für die Installation bestimmter Interpreter verwendet.
                                  Ist dies nicht der Fall, dann gibt es eine klare Fehlermeldung.
                                  Letzteres gefällt mir besser.

                                  mir gefällt das auch deutlich besser.

                                  Christoph S.

                    2. hi,

                      Also, zuerst einmal die entsprechende Stelle in der Apache conf.:
                          AddHandler cgi-script pl cgi

                      Ich nehme an, du hast dich nur hier im posting verschrieben und in deiner originalen httpd.conf die Punkte drinstehen. Also:
                      AddHandler cgi-script .pl .cgi

                      Dann mein Script läuft in der Form z.B. unter OMNIhttpd:
                      #!/usr/bin/perl

                      Dem OMNI ist diese Zeile eh egal, dem Apache je nach Konfiguration nicht. Und da du ihn unter Windows betreibst, hast du ja auf gar keinen Fall diesen Pfad zum Interpreter. Apache ignoriert diese Zeile unter Windows _nur_ dann, wenn das Script die Dateinamensendung PL trägt und außerdem eben in der httpd.conf noch "ScriptInterpreterSource registry" aktiv eingetragen ist.

                      Christoph S.

          2. Willst du mit so einem Ratschlag Michael Schröpl endgültig in den Herzinfarkt treiben ;-)

            (ohne worte)