Hiiilfe Dateiupload Problem
Timm
- php
0 Cheatah0 Timm0 Thomas Luethi0 Timm
0 Christoph0 Tristan
jaja
hALLO ERSTMAL
ich habe folgendes Problem:
mithilfe dieses befehls wird eine Datei upgeloaded:
$dest = "/home/www/web1432/phptmp/$dateiname";
if (move_uploaded_file($_FILES['datei']['tmp_name'],$dest)) {...
Habe bereits alles ausprobiert und mein provider lässt mich nur in
DIESES phptmp Verzeichnis uploaden.
So, und jetzt zum Problem: Dieses Verzeichnis liegt oberhalb meines
$DOCUMENT_ROOT. Wie kann ich jetzt einen link zu der upgeloadeten Datei erstellen?????
Eigentlich müsste er ja so lauten
http://www.domain.de/../phptmp/$dateiname
aber das geht natürlich nicht
Danke schonmal, Timm
Hi,
So, und jetzt zum Problem: Dieses Verzeichnis liegt oberhalb meines
$DOCUMENT_ROOT. Wie kann ich jetzt einen link zu der upgeloadeten Datei erstellen?????
gar nicht. Es sei denn, Du konfigurierst den Server so, dass er dieses Verzeichnis mit einem Alias verbindet o.ä.
Cheatah
Konfigurieren ist wohl nicht, bei meinem Provider.
Aber kann es denn überhaupt sein, daß die den move_uploaded_file
befehl nur innerhalb des phptmp Verzeichnisses erlauben???
Hallo Timm,
Aber kann es denn überhaupt sein, daß die den move_uploaded_file
befehl nur innerhalb des phptmp Verzeichnisses erlauben???
Schon seltsam. Aber was tun Provider nicht alles, um vermeintlich
auf der sicheren Seite zu sein...
Wenn alle Stricke reissen, musst Du halt folgenden Umweg gehen:
1. Mit PHP den Inhalt der hochgeladenen Datei in eine Variable einlesen.
2. In einem Verzeichnis, das
a) ueber's Web zugaenglich ist,
b) durch PHP beschreibbar ist,
eine neue Datei erzeugen und den Wert der Variable hineinschreiben.
3. Die urspruengliche Datei im Verzeichnis phptmp loeschen.
HTH, mfg
Thomas.
http://www.php.net/manual/de/features.file-upload.php
http://www.php.net/manual/de/function.fopen.php
http://www.dclp-faq.de/q/q-datei-lesen.html
http://www.dclp-faq.de/q/q-formular-upload-php3.html
sowohl copy() als auch move_uploaded_file funktionieren nur wenn das Ziel das phptmp Verzeichnis überhalb des $DOCUMENT_ROOT ist.
Ich krieg die kriese
Hallo nochmal,
sowohl copy() als auch move_uploaded_file funktionieren nur wenn das Ziel das phptmp Verzeichnis überhalb des $DOCUMENT_ROOT ist.
Ich habe auch nicht copy() oder move_uploaded_file vorgeschlagen, sondern einen anderen Weg. Hast Du den ausprobiert?
(Das tueckischste daran duerften wohl die Datei- und Ordner-Rechte sein.)
Noch ein Vorschlag:
Mach in einem Verzeichnis, das vom Web her lesbar ist, ein Skript hin, das den Inhalt der hochgeladenen Datei mit fpassthru() "durchreicht".
http://www.php.net/manual/de/function.fpassthru.php
Dann kannst Du auf dieses Skript einen Link machen, das einen Parameter erwartet, dank dem es weiss, welche Datei es durchreichen soll.
Ich krieg die kriese
Wenn schon heisst das "Krise".
Und wegen so einem Problemchen lohnt es sich echt nicht,
depressiv zu werden. :-)
mfg
Thomas
hALLO ERSTMAL
Hallo
Hast du da am Anfang 3 Verzeichnisse als Auswahl? Also: html, log und phptemp?
Danke schonmal, Timm
Gruß Christoph
Ja hab ich, und jetzt??? Kann ich vielleicht mithilfe von php einen link erstellen lassen????
Hi,
Kann ich vielleicht mithilfe von php einen link erstellen lassen????
ein Link hat nichts, wirklich gar nichts mit PHP zu tun. Es ist der Server, welcher den Localpart einer URI einer Ressource (die möglicherweise auch eine Datei ist) zuordnet. Die primitivste (und unüblichste) Methode ist, den Localpart einfach als Verzeichnisbaum unterhalb eines konfigurierten DOCUMENT_ROOT zu interpretieren. Solange dem Server nichts anderes einkonfiguriert wurde, kennt er dann auch nur diese Dateien und _keine_ anderen.
Insbesondere wäre es ein _extremes_ Sicherheitsrisiko, wenn er auf ".." reagieren würde. Ein jeder User hätte vollen Lesezugriff auf jede Datei des gesamten Systems.
Es gibt einen per HTTP zugänglichen Bereich auf der Festplatte. Jede Datei, die nicht in diesem Bereich liegt, ist per HTTP nicht zugänglich. That's it.
Cheatah
Viel Vlück dannmal, J