Wurzelzwerg: 1. Zeile im Perl-Script und Apache Webserver

Hallo allerseits,

ich habe ein Problem mit der ersten Zeile in einem Perl-script. Dort muss ja der Verwies auf den Perl-Interpreter stehen. Bei mir ist es aber so, dass ich lokal den Apache-Webserver verwende. Dort muss ich ins Perl-Script eben c:\Server... (ja, ich arbeite unter Windows ;-)) eintragen. Das klappt auch. Wenn ich das Script aber auf meinem richtigen Webserver betreiben will, dann steht dort was anderes (habs gerade nicht im Kopf). So weit so klar.
Das Problem ist nur, dass das Umschreiben der 1. zeile etwas lästig wird. Bis vor kurzem hatte ich eine andere lokale Umgebung (ein Server von Imatix) und dem war es relativ egal, was in der 1. Zeile steht. Gibt es die Möglichkeit, in die Config-Datei des Apache einen Eintrag vorzunehmen, damit er den Perlinterpreter auch so findet, unabhängig davon, was in der ersten zeile des Scripts steht??

vielen Dank schonmal

  1. Gibt es die Möglichkeit, in die Config-Datei des Apache einen Eintrag vorzunehmen, damit er den Perlinterpreter auch so findet, unabhängig davon, was in der ersten zeile des Scripts steht??

    Siehe diese Anleitung, für die Apache-Konfiguration gibt es die Direktive ScriptInterpreterSource (ausführliche Beschreibung für Apache 2). Also zuerst die Registry-Einträge prüfen und setzen, dann die Direktive anpassen. Alles neustarten, dann sollte es gehen.

    Siechfred

    --
    Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
    1. Vielen Dnak, ich werde es heute abend mal testen.

  2. Hallo,

    gaaanz einfach:

    angenommen, die shebang ist für linux
    #!/usr/bin/perl

    und der Win-Apache kommt von LW c: dann lege eine Kopie der perl.exe in das Verzeichnis c:\usr\bin\perl.exe

    Mit "This is perl, v5.6.1 built for MSWin32-x86-multi-thread" funtioniert das einwandfrei, die Scripts laufen ohne Änderung der shebang sowohl auf win32 als auch auf linux.

    Tipp+
    Erstelle die Scripts im UNIX-Dateiformat, gute Editoren können das.

    Viele Grüße,
    Hotte

    1. Tipp+
      Erstelle die Scripts im UNIX-Dateiformat, gute Editoren können das.

      Warum sollte er das tun?

      Struppi.

      1. Tipp+
        Erstelle die Scripts im UNIX-Dateiformat, gute Editoren können das.

        Warum sollte er das tun?

        Das vereinfacht den ftp dahingehend, dass alle Dateien grundsätzlich im binmode übertragen werden können.

        Viele Grüße,
        Hotte

        1. Tipp+
          Erstelle die Scripts im UNIX-Dateiformat, gute Editoren können das.

          Warum sollte er das tun?

          Das vereinfacht den ftp dahingehend, dass alle Dateien grundsätzlich im binmode übertragen werden können.

          gute FTP Programme können das automatisch

          Struppi.

          1. Hi,

            gute FTP Programme können das automatisch

            Gute FTP Programme wählen sogar das Verzeichnis automatisch aus ;-)

            http://rolfrost.de/ftp.html

            Viele Grüße,
            Horst Haselhun

            1. Hi,

              gute FTP Programme können das automatisch

              Gute FTP Programme wählen sogar das Verzeichnis automatisch aus ;-)

              http://rolfrost.de/ftp.html

              Aber eben den nicht den richtigen Modus:

              alles im binary_mode übertragen

              $ftp->binary;

              Der Tipp mit dem Umbrüchen kann in die Hose gehen, wenn du die Datei mit Perl lesen und bearbeiten willst

              Struppi.

              1. Hallo,

                Der Tipp mit dem Umbrüchen kann in die Hose gehen, wenn du die Datei mit Perl lesen und bearbeiten willst

                Da gabs noch nie Probleme. Aber es könnte bei der Übertragung im ascii-Mode Probleme geben, wenn der Provider vergessen hat, den FTP-Server richtig zu konfigurieren, alles schon erlebt ;-)

                Viele Grüße,
                Hotte

                1. Der Tipp mit dem Umbrüchen kann in die Hose gehen, wenn du die Datei mit Perl lesen und bearbeiten willst

                  Da gabs noch nie Probleme.

                  Wenn du eine Datei unter Windows einliest die einen Linux Zeilenumbruch hat, gab es noch nie Probleme?

                  Aber es könnte bei der Übertragung im ascii-Mode Probleme geben, wenn der Provider vergessen hat, den FTP-Server richtig zu konfigurieren, alles schon erlebt ;-)

                  Was hat der Server mit dem Mode zu tun?

                  Struppi.

                  1. hi,

                    Wenn du eine Datei unter Windows einliest die einen Linux Zeilenumbruch hat, gab es noch nie Probleme?

                    Nicht auf den Kisten, die hier so rumstehen ;-)

                    Aber es könnte bei der Übertragung im ascii-Mode Probleme geben, wenn der Provider vergessen hat, den FTP-Server richtig zu konfigurieren, alles schon erlebt ;-)

                    Was hat der Server mit dem Mode zu tun?

                    Ganz einfach: Die Zeilenendezeichen wandelt der Server um, nicht der Client. Der Client weist mit "mode ascii" nur den Server an, das zu tun.

                    Viele Grüße,
                    Hotte

  3. Das Problem ist nur, dass das Umschreiben der 1. zeile etwas lästig wird.

    Guten Tag,

    Perl-Skripte suchen auf Linux/Unix normalerweise nach "/usr/bin/perl" (#!/usr/bin/perl). - Erzeuge dieses Verzeichnis auf dem Laufwerk, auf dem auch der Apache-Webserver installiert ist (bspw. C:\usr\bin). Kopiere alle oder nur die benötigten Perl-Module in diesen Pfad. Hauptsache, die "perl.exe" liegt im Verzeichnis "/usr/bin". Eine Ergänzung der Umgebungsvariablen "PATH" auf Windows-Systemen ist (mit Administratorrechten) ebenfalls schnell gemacht (optional). Die Änderung der Erstzeile vor Übertragung des Skripts auf den Webserver ist dann nicht mehr notwendig.

    Wir verwenden seit Jahren auf Windows-Servern und -Clients eine Implementation des Unix-FHS (Filesystem Hierarchy Standard) als "winFHS" im produktiven Einsatz und nicht nur für "Webserverzwecke" (Windows ist zwar sehr "benutzerfreundlich", aber die "Unix-Dateiorganisation" ist eindeutig besser). Dabei werden alle relevanten FHS-Verzeichnisse auf einem eigenständigen Laufwerk, Partition oder Freigabe erstellt und aktiv genutzt (/home, /opt, /usr, /var).

    Beispielsweise...

    Installation des Servers: "[L]:/usr/local/apache/"
    Installation des Perl-Interpreters: "[L]:/usr/bin/"
    Installation von mySQL: "[L]:/usr/local/mysql/"
    Ablage der Webdokumente: "[L]:/home/www/httpd/"

    Gruß -hk

    __

    PS: Die Standardinstallation des Apache für Windows sieht ein Verzeichnis in der Art "C:\Programme\Apache Group\blablabla" vor. Bei Perl wird "C:\Perl" verwendet. - Dies ist Quatsch - Auf dl.b61.de gibts eine Binärdistribution des Apache/2.0.61 (kein OpenSSL) für Windows - ohne Setuproutine, entpacken reicht. Die httpd.conf dieser Distribution ist für den Serverbetrieb in der genannten Art und Weise voreingestellt. Das Paket enthält noch eine "APACHE-2.0.61-INFO.txt", in der u.a. beschrieben ist, wie für Windows bestimmte Pfadangaben in die httpd.conf einzutragen sind.
    Übrigens gibts für Windows auch ein freies "sendmail", das in Perl-Skripten als "/usr/sbin/sendmail" verwendet werden kann: http://glob.com.au/sendmail/

    1. Perl-Skripte suchen auf Linux/Unix normalerweise nach "/usr/bin/perl" (#!/usr/bin/perl). - Erzeuge dieses Verzeichnis auf dem Laufwerk, auf dem auch der Apache-Webserver installiert ist (bspw. C:\usr\bin). Kopiere alle oder nur die benötigten Perl-Module in diesen Pfad. Hauptsache, die "perl.exe" liegt im Verzeichnis "/usr/bin". Eine Ergänzung der Umgebungsvariablen "PATH" auf Windows-Systemen ist (mit Administratorrechten) ebenfalls schnell gemacht (optional). Die Änderung der Erstzeile vor Übertragung des Skripts auf den Webserver ist dann nicht mehr notwendig.

      Ich halte den Tipp von Siechfred für einfacher, eine Zeile in der Apachekonfiguration:
      ScriptInterpreterSource registry

      und fertig.

      Struppi.

      1. Ich halte den Tipp von Siechfred für einfacher ...

        Ich gebe Dir recht. Als momentaner Problemlöser ist mein Beitrag zu aufgeblasen.