XAMPP 1.6.2, Perl und relative Pfade

Alles, was Perl betrifft, kann hier besprochen werden.

XAMPP 1.6.2, Perl und relative Pfade

Postby mcgeddy » 25. June 2007 21:13

Hallo zusammen,

bin mir nicht ganz sicher, ob mein Problem jetzt in den Bereich XAMPP Konfiguration, Apache oder Perl fällt - versuch's einfach mal hier...

Eine Bitte vorneweg: ich bin weder der große Konfigurator vor dem Herr, noch nen Perl-Gott - Antworten also bitte "Dummy-kompatibel"... :)

Musste nach nem PC-Crash meinen Rechner neu aufsetzen und steh grad völlig auf dem Schlauch, was meine Konfiguration (XAMPP 1.6.2, Perl-Addon 5.8.8.2.2.4) angeht!

Folgendes Problem:

- Pfad für XAMPP ist "e:\xampp"
- dort hab ich in den htdocs nen Ordner "XYZ" mit den HTMLs und Unterordner mit Pics, Thumbs, CSS etc.
- im cgi-bin liegt ebenfalls nen Ordner "XYZ" , in dem meine *.pl-Dateien und ne Datei "pics.data" mit den Namen der Bilder liegt, die ich aus dem Pics-Ordner hole.

Perl funktioniert soweit und meine Seite wird grundsätzlich problemlos dargestellt.

PROBLEM SIND DIE DYNAMISCHEN DATEN: ich definiere in der Perl-Datei über

Code: Select all
$picbase="pics.data";

meine Datei mit den Angaben für die Bilder, die ja definitiv im selben Ordner (!!) wie meine Perl-Datei liegt - und... NIX!!

Hab dann bissl rumprobiert und festgestellt, dass das Ganze dann funktioniert, wenn ich

a) den absolute Pfad

Code: Select all
$picbase="e:/xampp/cgi-bin/XYZ/pics.data";

verwende, oder b) die relative Pfadangabe in

Code: Select all
$picbase="cgi-bin/XYZ/pics.data";"

benutze...!?

VERSTEH' ICH NICHT!!!

Anscheinend geht XAMPP hier ja von der Root (e:/xampp/) aus und nicht von der Stelle, in dem meine Perl-Datei liegt (e:/xampp/cgi-bin/XYZ/)...

Auf der anderen Seite hab ich in meinem Perl-File statische Grafiken eingebunden, die auch per relativen Pfad verlinkt sind, z.B.

Code: Select all
<img src=\"../../XYZ/gfx/headline.gif\">

Diese Grafiken liegen in htdocs -> XYZ -> gfx und werden mir problemlos angezeigt!
In diesem Fall wird also als Startpunkt für meinen Pfad das Verzeichnis der Perl-Datei ( e:/xampp/cgi-bin/XYZ/ ) genommen, oder nicht????

Lange Rede, kurzer Sinn: wie kann ich XAMPP so einstellen, dass meine relativen Pfadangaben zu Dateien im cgi-bin wieder passen???

Das Ganze hat schonmal so funktioniert - sowohl lokal, als auch im Netz! Möchte nicht in all meinen Dateien die Pfade ändern müssen: das sind irgendwelche Uralt-Dateien und ich bin wie erwähnt nicht der Perl-Code-Gott... brauch' Tage, bis ich mich da wieder irgendwie reingewurstelt hab! (und müsste dann ja zusätzlich ne zweite Version für die Online-Variante machen, oder??)

Hoffe, ich hab das jetzt nich zu kompliziert geschildert und ihr könnt mein Problem nachvollziehen...

Ich danke jedenfalls schonmal recht herzlich für Lösungsvorschläge aller Art!!
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17

Postby Wiedmann » 25. June 2007 21:34

Lange Rede, kurzer Sinn: wie kann ich XAMPP so einstellen, dass meine relativen Pfadangaben zu Dateien im cgi-bin wieder passen???

Benutz kein mod_perl, oder wechsel in deinem Script passend das Arbeitsverzeichnis.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mcgeddy » 25. June 2007 22:20

Hoppla... VIELEN DANK für die schnelle Antwort!

Ich hab ja gewarnt... bin diesbezüglich nen VOLLIDIOT! :)
Ich finde keine Möglichkeit mod_perl zu deaktivieren... was und wo muss ich da auskommentieren?

Bzw. wie meinst du das mit dem Arbeitsverzeichnis-Wechsel und welche Lösung ist die sinnvollere/einfachere?
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17

Postby mcgeddy » 25. June 2007 22:35

ok.. hab's gefunden und über die "setup_xampp.bat" mod_perl deaktiviert!

Jetzt bekomm ich allerdings nen

Error 500

Fehlermeldung:
couldn't create child process: 720003: pics_1.pl


sobald ich meine Perl-Seite aufruf'...??
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17

Postby Wiedmann » 25. June 2007 22:44

couldn't create child process: 720003: pics_1.pl

Du wirst in deinem Perl Script den SheBang nicht angepasst haben? (der Pfad zum Perl-Interpreter)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mcgeddy » 25. June 2007 22:52

so langsam komm ich (glaub ich) voran:

hab in meinem Perl-File jetzt aus

#!/usr/bin/perl

#!E:/xampp/perl/bin/perl.exe


gemacht - jetzt mag mein Script mich wieder! :)

Murks ich mich jetzt grad von Zufall zu Zufall, oder hat das Hand und Fuss???

Muss ich jetzt drauf achten, dass ich bei nem Upload auf nen Server den Shebang wieder dementsprechend in #!/usr/bin/perl änder'? Oder gibt's da ne elegantere Lösung??
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17

Postby KingCrunch » 25. June 2007 23:34

Ne, musste ändern ;) Das Ding zeigt ja auf den Interpreter. Unter Linux-Systemen hat sich dafür eine (mehr oder weniger) einheitliche Verzeichnis-Struktur durchgesetzt, so dass man da gerne mal die Zeile lassen kann, wie sie ist.
Unter Windows herrscht Verzeichnis-Technisch allerdings Narrenfreiheit ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby mcgeddy » 25. June 2007 23:53

OK... :)

Ich danke' euch auf jeden Fall für die schnelle Hilfe!!!

...allerdings nicht, ohne gleich mit dem nächsten Problem anzutanzen... (jetzt werd ich nämlich so langsam übermütig! :) )

Ich würd meine eigenen Geschichten gerne der Übersicht halber aus dem ganzen xampp-Ordner raushalten! Also hab ich versucht nen Virtual Host einzurichten...

Unter C:\Windows\system32\drivers\etc\hosts hab ich:
Code: Select all
127.0.0.1   localhost   # für das XAMPP-Zeugs
127.0.0.1   intranet    # für meinen eigenen Schotter


unter e:\xampp\apache\conf\extra\httpd-vhosts.conf steht:
Code: Select all
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot E:/xampp/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot E:/intranet
    ServerName intranet
    DirectoryIndex index.html index.php
    <Directory "E:/intranet">
       Options Indexes FollowSymLinks Includes ExecCGI
       Order allow,deny
       Allow from all
       AllowOverride All
    </Directory>
</VirtualHost>


in der httpd.conf hab ich folgendes veranstaltet:
Code: Select all
#
# "E:/xampp/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#

#<Directory "E:/xampp/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>

<Directory "E:/intranet/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


...also das Original cgi-bin Verzeichnis auskommentiert und stattdessen mein eigenes angegeben.

Soweit, so gut... wenn ich im Browser "localhost" eingeb', dann kommt meine xampp-Oberfläche, wenn ich "intranet" eingeb', dann komm ich auf das Directory mit meinen Projekten... DAS FUNZT!

Problem ist jetzt glaub ich, dass ich irgendwie noch den Zugriff auf mein eigenes cgi-bin erlauben muss...?! Zumindest bekomm' ich nen

Error 403 - Zugriff verweigert

Was muss ich denn noch editieren? Bzw. bin ich mit der Virtual Host-Geschichte auf diese Art und Weise ganz gut dabei, oder völlig auf dem Holzweg?? :)[/code]
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17

Postby mcgeddy » 26. June 2007 00:17

hab mir glaub selbst geholfen! :)

den Schotter aus der httpd.conf wieder raus und dafür in der httpd-vhosts.conf:
Code: Select all
<VirtualHost *:80>
    DocumentRoot E:/intranet
    ServerName intranet
    DirectoryIndex index.html index.php
    <Directory "E:/intranet">
       Options Indexes FollowSymLinks Includes ExecCGI
       Order allow,deny
       Allow from all
       AllowOverride All
    </Directory>
   
   ScriptAlias /cgi-bin/ "E:/intranet/cgi-bin/"
   <Directory "E:/intranet/cgi-bin">
   Order allow,deny
   Allow from all
   </Directory>

</VirtualHost>


Jetzt will es...!!

MERCI NOCHMAL AN EUCH 2 UND GUTE NACHT!
mcgeddy
 
Posts: 6
Joined: 25. June 2007 18:17


Return to Perl

Who is online

Users browsing this forum: No registered users and 3 guests