Dr.Ma-Busen: Apache: Problem mit ScriptInterpreterSource

Nabend!

Also, ich hatte bis gestern auf meinen Win XP Pro. Rechner den Jana2 Server mit ActivePerl 5.8.0 sowie PHP 4.2.2 am laufen um meine Scripte Lokal zu testen. Da ich mich jetzt aber mal etwas mit .htaccess auseinander setzen wollte, habe ich gestern den Apache 2.0.39 installiert und MYSQL ist auch noch drauf. Mittlerweile läuft das auch alles.
Das Problem sind jetzt nur die Perl- Scripte. Damit ich nicht dauernd die Shebang ändern muss, wollte ich den Apache mit ScriptInterpreterSource entsprechend konfigurieren. Aber wenn ich jetzt ein Perl- Script aufrufe dann bekomme ich eine Server Error. Um genau zu sein den hier
----------------
Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.
Fehlermeldung:
couldn't create child process: 22503: D:/Server/Html/docmabusen/index.cgi
Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den webmaster hierüber.
Error 500
--------------

In der Log steht auch das, dass System den angegeben Pfad nicht finden kann.

Wenn ich aber in die erste Zeile das Perl- Script den Pfad zu perl angebe, dann wird das Script auch Ordnungsgemäß ausgeführt

Die Dateiendungen sind in Windows registriert, wenn ich ein Doppelklick auf eine *.cgi oder *.pl Datei mache dann werden die auch mit Perl gestartet.

So, jetzt habe ich schon den ganze Tag damit verbracht das zum laufen zu bekommen, habe icm Archiv gewühlt, die Dokumentationen gelesen, bei Googel gesucht und und und...

Ich weis jetzt nicht wo das Problem liegt. Ich habe mal unter den folgenden Link die aktuelle Konfiguration des Apache gestellt (Textdatei).
http://home.tiscali.de/d.woestefeld/apache_conf.txt

Wäre nett wenn mir jemand helfen kann.

MfG
Dr. Ma-Busen

  1. Ich weis jetzt nicht wo das Problem liegt. Ich habe mal unter den folgenden Link die aktuelle Konfiguration des Apache gestellt (Textdatei).
    http://home.tiscali.de/d.woestefeld/apache_conf.txt

    Du benutzt ScriptInterpreterSource Registry-Strict ohne es eingerichtet zu haben, benutze ScriptInterpreterSource Registry oder richte ExecCGI Schlüssel ein.

    1. Du benutzt ScriptInterpreterSource Registry-Strict ohne es eingerichtet zu haben, benutze ScriptInterpreterSource Registry oder richte ExecCGI Schlüssel ein.

      Auch wenn ich Registry benutze geht es nicht.

      Wenn ich Registry-Strict benutzen will, was muss ich da noch einrichten?
      Und wie meinst du das mit ExecCGI schlüss einrichten? Einfach mit bei Options angeben? Habe ich auch schon versucht, ohne erfolg.

      MfG

  2. morgens,

    Apache 2.0.39 installiert

    Warum denn das? Du installierst dir _ganz neu_ einen Apache und nimmst _ganz bewußt_ eine instabile Version, obwohl es die stabile und gerade für Windows empfohlene Version 2.0.48 längst gibt?

    und MYSQL ist auch noch drauf

    Das ist im Zusammenhang deiner Frage vollkommen uninteressant, wenn auch nett zu wissen.

    Das Problem sind jetzt nur die Perl- Scripte

    Nein. Das Problem ist deine nicht sehr brauchbare Apache-Version, und deine ungenügende Kenntnisnahme der Apache-Dokumentation auf http://httpd.apache.org/docs-2.0  -  die ist inzwischen sogar teilweise in Deutsch.

    Damit ich nicht dauernd die Shebang ändern muss, wollte ich den Apache mit ScriptInterpreterSource entsprechend konfigurieren

    Das ist eine Begründung, die häufiger gebraucht wird, was sie aber keineswegs besser macht.

    couldn't create child process: 22503: D:/Server/Html/docmabusen/index.cgi

    Dein Server liefert dir doch genau damit den exakten Grund. Ein Verzeichnis "D:/Server/Html/docmabusen" gibt es für ihn nicht als cgi-bin, genauer: es gibt überhaupt kein cgi-bin, da du in deiner httpd.conf
    #ScriptAlias /cgi-bin/ "D:/Server/Apache2/cgi-bin/"
    _mit_ dem Kommentarzeichen davor stehen hast. Und auch noch ohne Kommentarzeichen wäre das ein anderes Verzeichnis als "D:/Server/Html/docmabusen". Auch dein virtual host, der sowieso nicht funbktionieren kann, kennt kein solches cgi-bin. Zuguterletzt solltest du eine "index.cgi" auch bei "DirectoryIndex" angeben, wenn du sie denn tatsächlich als Index-Datei nutzen möchtest.

    Versuch es mal ohne "ScriptInterpreterSource" und schau nach, ob du es dann hinkriegst. Außerdem ist, falls ich mich nicht allzusehr irre, Groß-/Kleinschreibung in der httpd.conf nicht ganz unwichtig.

    Wenn ich aber in die erste Zeile das Perl- Script den Pfad zu perl angebe, dann wird das Script auch Ordnungsgemäß ausgeführt.

    Das ist bei deiner fehlerhaften Angabe eines cgi-bin höchst unwahrscheinlich (es gibt keinen Alias, mit dem die perl.exe gefunden werden könnte). Aber wenns tatsächlich klappt, dann bleib doch dabei und schreibe eine korrekte shebang. Das ist ohnehin nützlicher, als die Direktive "ScriptInterpreterSource" einzusetzen, ohne verstanden zu haben, wie sie gehandhabt werden möchte. Außerdem wird dein Provider, bei dem du deine Scripts ja später deponieren möchtest, vielleicht die Direktive "ScriptInterpreterSource" gar nicht aktiviert haben.

    So, jetzt habe ich schon den ganze Tag damit verbracht das zum laufen zu bekommen, habe icm Archiv gewühlt

    Wirklich? Zum Thema "ScriptInterpreterSource" hättest du da auf ziemlich fruchtbare Weise fündig werden müssen.

    die Dokumentationen gelesen

    Welche Dokumentationen hast du gelesen und was hast daran so wenig verstanden, daß du trotzdem eine derart miserabel "gestaltete" httpd.conf hast?

    http://home.tiscali.de/d.woestefeld/apache_conf.txt

    Danke. Das ist immer sehr gut, nicht das ganze Ding hier mit an dein posting dranzuhängen, sondern es auf eine temporäre Adresse hochzuladen. Kriegst einen Plsupunkt dafür ;-)
    Aber der geht gleich wieder flöten. Vielleicht hilft dir http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf061.htm doch noch ein bißchen weiter, obwohl das für eine andere Apache-Version gültig ist  -  aber so viel hat sich an den httpd.conf-Kommentaren immer noch nicht geändert.
    Und dann: Es ist zwar löblich, daß du deine ganze httpd.conf hochgeladen hast  -  aber du hättest getrost die Kommentare vorher rausstreichen können, da du sie ja ohnehin nicht beherzigt hast *g*

    Grüße aus Berlin

    Christoph S.

    1. Mahlzeit!

      So, als erstes ist Problem gelöst. Und zwar fehlte nur in der Registrierung in den Schlüsseln .cgi und .pl der Schlüssel shell/ExecCGI/Command . Eigentlich hätte mir das auch schon viel früher auffallen müssen bzw. viel früher gesehen haben, zu mal es mit in der Doku steht. Aber manchmal sieht man den Wald vor lauter Bäumen nicht mehr. Besonders wenn die Motivation auf grund anderer Fehlschläge/Probleme im Keller ist .

      Warum denn das? Du installierst dir _ganz neu_ einen Apache und nimmst _ganz bewußt_ eine instabile Version, obwohl es die stabile und gerade für Windows empfohlene Version 2.0.48 längst gibt?

      Ok, so neu war der Apache nicht, der lag ungefähr ein halbes Jahr in den Katakomben meiner HD rum. Und das, dass ne Instabile Version war/ist wusste ich nicht. Aber mittlerweile bin ich im besitz der 2.0.48

      Das es die Apache Doku auch in Deutsch gibt habe ich gestern kurz nach dem Posting auch entdeckt. Sonst hatte ich nur die Doku auf, die beim Server bei war.
      Mittlerweile habe ich auch eine, hoffentlich komplette Doku vom 2.0.48 Apache in Deutsch als Windoof HTML- Hilfe Datei.

      Dein Server liefert dir doch genau damit den exakten Grund. Ein Verzeichnis "D:/Server/Html/docmabusen" gibt es für ihn nicht als cgi-bin...
      ....Zuguterletzt solltest du eine "index.cgi" auch bei "DirectoryIndex" angeben, wenn du sie denn tatsächlich als Index-Datei nutzen möchtest.

      Das es kein CGI-BIN Verzeichnis gibt/gab wusste ich. Ich habe das doch so eingerichtet das CGI- Scripte in allen Verzeichnissen ausgeführt werden können. Hoffe mal das, das so richtig war/ist. Die index.cgi habe ich auch bei DirectoryIndex angegeben. Aber nicht in der Server conf sondern in einer htaccess im Root Verzeichnis, dass hätte ich vielleicht erwähnen sollen.

      Versuch es mal ohne "ScriptInterpreterSource" und schau nach, ob du es dann hinkriegst. Außerdem ist, falls ich mich nicht allzusehr irre, Groß-/Kleinschreibung in der httpd.conf nicht ganz unwichtig.

      Ohne ScriptInterpreteSource hat es ja funktioniert, Vorraussetzung ich habe die Shebang angepasst.

      Aber wenns tatsächlich klappt, dann bleib doch dabei und schreibe eine korrekte shebang. Das ist ohnehin nützlicher, als die Direktive "ScriptInterpreterSource" einzusetzen, ohne verstanden zu haben, wie sie gehandhabt werden möchte. Außerdem wird dein Provider, bei dem du deine Scripts ja später deponieren möchtest, vielleicht die Direktive "ScriptInterpreterSource" gar nicht aktiviert haben.

      Genau des wegen will ich ja die "Derektive", weil mein Provider ist ein UNIX- System. So kann ich ja dann die Shebang stehen lassen.

      So, jetzt habe ich schon den ganze Tag damit verbracht das zum laufen zu bekommen, habe icm Archiv gewühlt

      Wirklich? Zum Thema "ScriptInterpreterSource" hättest du da auf ziemlich fruchtbare Weise fündig werden müssen.

      Ja ok, im Archiv habe ich viel gefunden (ca.70 resultate), aber ich habe mir nur einzelne Artikel herausgesucht die vom Titel und von den Textausschnitten her, sich interessant anhörten. Aber was da drin stand hatte ich meistens schon vorher auf anderen Seiten gefunden wie z.B. die hier
      http://www.hanpie.hp-home.de/sammlung/wampp/apache_konfig.shtml
      Oder was in den Artikeln stand, hat auch nicht funktioniert.
      Ok, ich hätte mir alle Artikel durchlesen sollen. Problem ist nur, ich bin noch einer von denen die mit einen alte 56k Modem unterwegs sind und jede Minute teuer bezahlen müssen.

      Na ja, auf jeden fall läuft das ganze jetzt. Bis auf PHP, das geht nicht mehr. Wenn ich die Zeilen einfüge wie in der conf unter dem Link, dann bekomme ich in einer Dialogbox die Meldung "The requested oparation has failed." Mal schauen wie lange ich dafür brauche *g*
      Danke für dein Hilfe.

      MfG
      Dr. Ma-Busen