Markus**: XAMPP Konfiguration

Hallo Froum!

Ich teste grade zum ersten Mal XAMPP (Windows) nachdem ich bislang immer die einzelnen Komponenten separat installiert und konfiguriert habe.

Nun habe ich ein Testscript installiert (perl), welches auf der manuell installierten Webumgebung alsauch auf dem Webserver des Providers meines Vertrauens einwandfrei läuft. XAMPP meckert rum, dass das das manuell eingefügte Perl Paket nicht "Includiert" ist.
Fehlermeldung: "Can't locate Local/Net/SMTP_auth.pm in @INC"... usw.
Setze ich den Pfad in die @INC Umgebungsvariable, läuft es bis zum nächsten, nicht includierten (in diesem Falle ein 'require "session.pl";') weiter.

Ich möchte NICHT dauernd und immer wieder diese Teilscripte an irgendeiner Umgebungsvariable "registrieren" müssen. Das nervt ein wenig!

Wo kann ich den XAMPP so umkonfigurieren, dass man solche Parts nicht includieren braucht? Kann man das Abschalten? bzw. ein Wildcard like: "*" benutzen?

Gruß, Markus**

  1. Fehlermeldung: "Can't locate Local/Net/SMTP_auth.pm in @INC"... usw.
    Setze ich den Pfad in die @INC Umgebungsvariable, läuft es bis zum nächsten, nicht includierten (in diesem Falle ein 'require "session.pl";') weiter.
    Wo kann ich den XAMPP so umkonfigurieren, dass man solche Parts nicht includieren braucht? Kann man das Abschalten? bzw. ein Wildcard like: "*" benutzen?

    Hattest Du eine eigene Perl-Installation unter Windows, in welcher diese Module mitinstalliert sind, schon vor der Xampp-Installation?

    Wenn ja, musst Du in der httpd.conf es so einstellen, dass der XAMPP-Apache sich die Perl.exe von Deiner Windows-Installation bedient, anstatt der Perl.exe, welche die Xampp-Installation mitbringt:

    unter /xampp/apache/conf die httpd.conf editieren, folgende Zeile einfügen (oder Kommentarzeichen entfernen, falls bereits vorhanden):

    ScriptInterpreterSource registry

    P.

    1. Moin!

      Hattest Du eine eigene Perl-Installation unter Windows, in welcher diese Module mitinstalliert sind, schon vor der Xampp-Installation?

      Nee, der rechner ist "sauber". Hier war noch niemals perl, php, apache und dergleichen installiert

      Wenn ja, musst Du in der httpd.conf es so einstellen, dass der XAMPP-Apache sich die Perl.exe von Deiner Windows-Installation bedient, anstatt der Perl.exe, welche die Xampp-Installation mitbringt:

      unter /xampp/apache/conf die httpd.conf editieren, folgende Zeile einfügen (oder Kommentarzeichen entfernen, falls bereits vorhanden):

      ScriptInterpreterSource registry

      Einfach eine Zeile einfügen? In welchem Bereich denn? Ich kann doch nich einfach, irgendwo was einfügen. Schon garnicht irgendwas, von dem ich z.Zt. nichtmal erfasse was es soll!

      P.

      Gruß, M**

      1. Nee, der rechner ist "sauber". Hier war noch niemals perl, php, apache und dergleichen installiert

        Also, wenn Du auf dem Rechner keine Perl-Installation hast, z.B. unter C:/Perl o.Ä., dann ist die Zeile

        ScriptInterpreterSource registry

        nicht notwendig.

        Ansonsten müsstest Du prüfen, wo die benötigten Module sind, denn anscheinend sind sie in einem anderen Verzeichnis, als diejenigen, die @INC auflistet.

        Sind die Module denn unter /xampp/perl/lib bzw. /xampp/perl/site/lib vorhanden?

        P.

        1. Ich setze mich ja nun nicht das erste Mal mit sowas auseinander und ich habe auch, wie es sich gehört die Perl-Pakete die ich dynamisch einbinde, da sie beim Provider nicht installiert sind mit use lib qw(/pfad) eingebunden.
          Läuft wie gesagt unter meiner manuellen installation einwandfrei (testumgebung), bei provider ebenso einwandfrei (internet), nur bei mir lokal unter XAMPP nicht.

          mfg Markus**

          1. Ich setze mich ja nun nicht das erste Mal mit sowas auseinander

            Das glaube ich Dir gerne, doch wenn die Meldung »Can't locate xy.pm in @INC...« kommt, dann werden die Module eben nicht gefunden!

            Also WO sind Deine Module oder weiteren Skripte, die Du mit require() einbindest, und WAS gibt @INC aus?

            Bei use lib qw(/Pfad) evtl. ein Laufwerkbuchstabe vergessen (Du arbeitest doch unter Windows)?

            Was ist unter Deiner:

            manuellen installation (testumgebung)

            zu verstehen?

            P.

            1. Also WO sind Deine Module oder weiteren Skripte, die Du mit require() einbindest, und WAS gibt @INC aus?

              die liegen im Verzeichnis in dem auch das aufrufende Perl-Script liegt. Teils in Unterverzeichnissen davon

              Bei use lib qw(/Pfad) evtl. ein Laufwerkbuchstabe vergessen (Du arbeitest doch unter Windows)?

              nein, sind relativ nicht absolut angegeben

              Was ist unter Deiner:

              manuellen installation (testumgebung)

              zu verstehen?

              Ein abbild meiner Webumgebung auf einem W2K Server in meinem Netzwerk

              Ich hab übrigens grade activeperl runtergeladen und installiert und anschließend das script von der kommandozeile aus gestartet - und siehe da - es läuft anstandslos durch.
              Nur der Apache, Mod-Perl und XAMPP wollen das nicht begreifen! :)

              M**

              1. Also WO sind Deine Module oder weiteren Skripte, die Du mit require() einbindest, und WAS gibt @INC aus?
                die liegen im Verzeichnis in dem auch das aufrufende Perl-Script liegt. Teils in Unterverzeichnissen davon

                und das ist /xampp/cgi-bin? Oder ein anderes Verzeichnis?

                Bedenke, dass (wenn sich nichts geändert hat, ich habe Xampp 1.7.2) das cgi-bin sich außerhalb des DOCUMENT_ROOT befindet (/xampp/htdocs).

                Da wir nicht wissen, wie Du was konfiguriert (oder nicht) hast, ist Hilfe hier schwer zu leisten.

                Vielleicht bringen Dir die Ausgaben von Cwd oder FindBin ($FindBin::Bin) weiter...

                Ich hab übrigens grade activeperl runtergeladen und installiert und anschließend das script von der kommandozeile aus gestartet - und siehe da - es läuft anstandslos durch.

                Na jetzt könntest Du ScriptInterpreterSource registry in die httpd.conf notieren, wird vermutlich, wenn Du allen Anschein nach ein Pfad-Problem hast, nicht viel helfen.

                Nur der Apache, Mod-Perl und XAMPP wollen das nicht begreifen! :)

                mod_perl habe ich deaktiviert.

                P.

                1. und das ist /xampp/cgi-bin? Oder ein anderes Verzeichnis?

                  Das ist ein anderes - wie schon geschrieben, ist es das Verzeichnis wo auch das ausführende Script liegt.

                  Bedenke, dass (wenn sich nichts geändert hat, ich habe Xampp 1.7.2) das cgi-bin sich außerhalb des DOCUMENT_ROOT befindet (/xampp/htdocs).

                  Genau dieses verhalten abzustellen habe ich ja im eingangsposting gefragt.

                  Da wir nicht wissen, wie Du was konfiguriert (oder nicht) hast, ist Hilfe hier schwer zu leisten.

                  ich habe versucht in der "perl.conf" das o.g. verzeichnis einzubinden. Allerdings ohne Erfolg.

                  Na jetzt könntest Du ScriptInterpreterSource registry in die httpd.conf notieren, wird vermutlich, wenn Du allen Anschein nach ein Pfad-Problem hast, nicht viel helfen.

                  in WELCHEM Teil der httpd.conf sollte ich dieses denn tun?

                  Nur der Apache, Mod-Perl und XAMPP wollen das nicht begreifen! :)

                  mod_perl habe ich deaktiviert.

                  wie kann man das abschalten?
                  M**

                  1. und das ist /xampp/cgi-bin? Oder ein anderes Verzeichnis?
                    Das ist ein anderes - wie schon geschrieben, ist es das Verzeichnis wo auch das ausführende Script liegt.

                    use FindBin;  
                    use lib '$FindBin::Bin';
                    

                    Du wirst nicht drum 'rum kommen, ein kleines Testskript zu schreiben, um zu sehen, was Sache ist ;)

                    #!C:/Perl/bin/perl.exe -w  
                      
                    use strict;  
                    use Cwd;  
                    use FindBin;  
                    use CGI qw(header);  
                    use CGI::Carp 'fatalsToBrowser';  
                    #use <DEINMODUL>;  
                    #require <DEINSCRIPT>;  
                      
                    print header();  
                    print "Current WD ist: ", cwd(), "<br>";  
                    print "Verzeichnis des Skripts ist: ", $FindBin::Bin, "<br>";  
                    print "@INC <br>";
                    

                    Und dann entfernst Du die Kommentare bei den Zeilen, die Deine Module einbinden, und testest erneut! Auch mit:

                    use lib '$FindBin::Bin';

                    (nach dem Einbinden von FindBin, natürlichement!)

                    Was soll ich Dir noch sagen? Wie schon erwähnt, wenn »Can't locate ...« ausgegeben wird, dann findet Perl die per use oder require benötigten Module oder Skripte nicht!

                    Bedenke, dass (wenn sich nichts geändert hat, ich habe Xampp 1.7.2) das cgi-bin sich außerhalb des DOCUMENT_ROOT befindet (/xampp/htdocs).
                    Genau dieses verhalten abzustellen habe ich ja im eingangsposting gefragt.

                    Durch ein Konfigurieren in der httpd.conf oder - wie bei mir hier daheim der Fall - durch das Anlegen von Virtual Hosts (httpd-vhosts.conf, zu finden in /xampp/apache/conf/extras). Das impliziert aber auch ein Editieren der hosts-Datei (unter Windows: %WINDIR%\system32/drivers/etc - bei Vista muss man sich die Rechte aneignen).

                    Da wir nicht wissen, wie Du was konfiguriert (oder nicht) hast, ist Hilfe hier schwer zu leisten.
                    ich habe versucht in der "perl.conf" das o.g. verzeichnis einzubinden. Allerdings ohne Erfolg.

                    Diese Datei habe ich nie editieren müssen und nie angerührt...

                    Na jetzt könntest Du ScriptInterpreterSource registry in die httpd.conf notieren, wird vermutlich, wenn Du allen Anschein nach ein Pfad-Problem hast, nicht viel helfen.
                    in WELCHEM Teil der httpd.conf sollte ich dieses denn tun?

                    Egal wo, Hauptsache nicht innerhalb eines Blocks. Aber sicherheitshalber informiere Dich darüber. Nicht dass ich Schuld sein soll an irgendwelchen Abstürzen bei Dir ;)

                    Das erlaubt Dir auf jeden Fall, die Shebang #!/usr/bin/perl zu benutzen, ohne vor jedem Hochladen auf dem »entfernten« Server die Ersetzung vorzunehmen.

                    mod_perl habe ich deaktiviert.
                    wie kann man das abschalten?

                    Beim allerersten Start von XAMPP wirst Du in einem cmd-Fenster gefragt. Müsste nachträglich aber auch über die xampp.bat zu ändern gehen...

                    P.

                    1. Achja... und XAMPP sollte doch SOOO einfach und schnell sein! :)
                      Ich installiere nun wieder die Komponenten einzeln, dann weiß ich wenigstens WO und in WELCHEM Verzeichnis ich WAS konfiguriert habe!

                      Toll gemacht, XAMPP! :)

                      1. Achja... und XAMPP sollte doch SOOO einfach und schnell sein! :)

                        ja! (achte mal auf den Thread-Starter ;))

                        Ich lese mir den Thread nicht noch mal durch, aber wir hatten schon eine Lösung gefunden. Seitdem habe ich ja Xampp, und Xampp, meine ActiveState Perl-Install und ich keine Probleme miteinander :)

                        Ich installiere nun wieder die Komponenten einzeln, dann weiß ich wenigstens WO und in WELCHEM Verzeichnis ich WAS konfiguriert habe!

                        nun ja, ob du in der httpd.conf vom Xampp-Apache oder in der eines einzeln installierten Apache herumdokterst, konfigurieren musst Du allemal!

                        Übrigens richtig ist nicht:

                        use lib '$FindBin::Bin';

                        sondern

                        use lib "$FindBin::Bin";

                        oder

                        use lib qw($FindBin::Bin);

                        da bei der ersten Notierung keine Variableninterpolation stattfindet.

                        P.

                        1. Ich hab nun meine vorhandene httpd.conf auf dem W2K System durchgeforstet, die XAMPP interne perl.conf "gelöscht" und den ganzen Kram mittels:

                            
                          AddHandler cgi-script .cgi .pl  
                          <Directory "/">  
                            Options FollowSymLinks +ExecCGI  
                            AllowOverride None  
                          </Directory> 
                          

                          eingebunden.

                          Dazu hab ich noch die perl.exe in das Verzeichnis C:\usr\bin kopiert, sodass ich meine scripts mit #!/usr/bin/perl beginnen kann.

                          Es läuft alles ausgezeichnet! Danke und noch nen schönen Sonntag Euch allen!

                          Markus**

                          1. AddHandler cgi-script .cgi .pl
                            <Directory "/">
                              Options FollowSymLinks +ExecCGI
                              AllowOverride None
                            </Directory>

                            
                            >   
                            > eingebunden.  
                              
                            Wenn du ActiveState Perl installiert hast, dann hätte es eigentlich auch das von Partrick schon erwähnte: ScriptInterpreterSource registry  getan.  
                              
                            
                            > Dazu hab ich noch die perl.exe in das Verzeichnis C:\usr\bin kopiert, sodass ich meine scripts mit #!/usr/bin/perl beginnen kann.  
                              
                            und das hättest du dir dann sparen können.  
                              
                            Struppi.