Datei schreiben in Perl

xamppgast

New Member
In der httpd.conf in meiner xampp-Apache Installation habe mittels "Alias /cgi-bin/ e:/hp/hp1/cgi-bin/" ein eigenes Verzeichnis für meine cgi-bin definiert.
Die Perl-Programme funktionieren dort mit einer Ausnahme.
In dem Perl-Programm möchte ich eine Datei in das Verzeichnis e:/hp/hp1/dir/ schreiben.
Ich gebe als Pfad an "../dir/datei.txt". Dann bricht das Programm beim Dateischreiben ab.
Gebe ich "datei.txt" an, so kommt kein Fehler, allerdings wird die Datei in das Verzeichnis xampp geschrieben.
Wie kann ich erreichen, dass mein definiertes Verzeichnis als Basis für die rel. Adressierung genommen wird?
 
Fange den Fehler (wahrscheinlich bei open()) entsprechend ab und laß Dir die Fehlernummer bzw. Fehlertext ausgeben:
Code:
open(...) or die "Fehler: $!";

huschi.
 
Die Meldung lautet "No such file or directory ....".
Da der open zum Schreiben einer neuen Datei ausgelegt ist, heißt es
"Verzeichnis nicht vorhanden".
Allerdings ist das Verzeichnis mit Sicherheit vorhanden, es ist aber offensichtlich dem Server oder Perl nicht bekannt.
Nur wo in httpd.conf o.ä. kann ich es definieren?
 
Ich tippe mal auf ein Rechte-Problem. Hast die Verzeichnis- und Benutzerrechte schon mal angesehen? Der Apache-Benutzer muß darauf zugreifen und schreiben können.

Es ist jedenfalls kein Problem mit dem Apache. Das wäre es nur, wenn er z.B. in einer Jail laufen würde, was aber unter Windows nicht geht.

huschi.
 
An den Rechten kann es nicht liegen, denn wenn ich den Pfad absolut angebe
(e:/hp/hp1/dir/datei.txt), legt er die Datei an.
Wenn ich im cgi-Programm relativ adressiere, wird offensichtlich als Basis nicht das Verzeichnis genommen, indem das cgi-Programm läuft sondern c:/xampp.
Wie kann ich dem Programm beibringen "benutze das Vezeichnis, unter dem du selbst läufst"?
 
Finde mal mit dem CWD-Modul raus, in welchem Verzeichnis das Script gestartet wird.

huschi.

Das Verzeichnis ist c:/campp.
Aber das Programm steht doch in e:/hp/hp1/cgi-bin/ und der httpd.conf in meiner xampp-Apache Installation habe mittels "Alias /cgi-bin/ e:/hp/hp1/cgi-bin/" definiert. Es gibt garantiert keine Kopie des Programms.
 
Code:
#!/usr/bin/perl -w
use Cwd;
print "Content-type: text/html\n\n";
print "Dir: ", cwd, "\n";
Dieser Code liefert Dir "c:\xampp"? Das ist wirklich seltsam, denn bei meinem Xampp ist das nicht so.
Es würde auch keinen Unterschied machen, wenn man statt "Alias" "ScriptAlias" setzt.

huschi.
 
Eine bescheidene Frage: Liegt in dem von dir eingerichteten Verzeichnis wirklich das Programm/Skript oder ist da aus versehen nur ein Link auf das eigentlich Programm gelandet?
 
Back
Top