Web Download per PhP

T

tx_g

Gast
Hallo,
Ich habe ein (hoffentlich kleines) Proble.
Ich würde gern von meinem Webserver aus, Dateien verteilen. Allerdings funktioniert das Herunterladen nicht. Mein Code sieht in etwa so aus:
Code:
<!DOCTYPE html5>
		<h1>Datei-Liste:</h1> 
<p>Diese Dateien sind im Verzeichnis:</p> 
<table border="1" width="100%" cellpadding="3" cellspacing="0"> 
<tr> 
<th align="left">Dateiname</th> 
<th align="right">Groesse</th> 
<th align="left">Hochgeladen</th>  
</tr> 
<script language="php"> 

date_default_timezone_set('Europe/Zurich'); /* notwendig ab PHP 5.3, sonst Warnung */ 

$verzeichnisname = "/Filebase/Blender/"; 

$verzeichnis = opendir($verzeichnisname); 
while($eintrag = readdir ($verzeichnis)) 
{ 
  $test = $verzeichnisname . "/" . $eintrag; 
  if(is_dir($test) or (($eintrag==".htaccess") or ($eintrag=="verboten.html"))) 
    { 
     /* echo "<!-- $eintrag -->\n"; */ 
    } 
  else 
     { 
	 echo "<tr>\n<td align=\"left\"><a href=\"/Filebase/Blender/$eintrag\">$eintrag</a></td>\n";
     echo "<td align=\"right\">" . filesize($test) . " Byte</td>\n"; 
     echo "<td align=\"left\">" . strftime("%a, %d.%b.%y, %H:%M", filemtime($test)) . "</td>\n";  
     } 
} 
closedir($verzeichnis); 
</script> 

</table> 

	</body>
</html>
Natürlich ist da noch mehr im Head und Body, allerdings ist dies das was die Dateien anzeigen und Downloaden sollte können.
Es sicht sich alle Dateien aus dem Verzeichnis /Filebase/Blender/ herraus und listet sie auf. Klickt man nun auf eine Datei Wird man von der Seite aus auf www.diedomain.de/Filebase/Blender/beispieldatei.txt weitergeleitet, wo einem die Not Found Fehlermeldung erscheint. Die Datei existiert aber irgendwas muss ich ja falsch machen. Hoffe ihr könnt helfen.
 
Das PHP-Skript greift auf
Code:
/Filebase/Blender/
zu. Dein generiertes HTML verweist auf http://example.org/Filebase/Blender/... - Merkste was?

Dein Skript greift lokal auf dem Dateisystem auf etwas zu, allerdings ist das "Etwas" von außen nicht erreichbar, da es nicht im Verzeichnis liegt, welcher über deinen Webserver erreichbar ist.
 
CryNickSystems schrieb:
Dein Skript greift lokal auf dem Dateisystem auf etwas zu, allerdings ist das "Etwas" von außen nicht erreichbar, da es nicht im Verzeichnis liegt, welcher über deinen Webserver erreichbar ist.
Wie meinst du das genau, ich kann nicht so wirklich folgen.

Hanni2k schrieb:
wie ist denn die verzeichnisstruktur auf deinem webserver?
Also der Teil der für den Webserver liegt ist unter /var/www/ zu finden.
Dort unterteilt er wiederum in /owncloud und /html . In dem /HTML befinden sich wiederum einige Webseiten in ihren unterordner wie z.bsp die mit dem Script unter /var/www/html/fileserver/Blender/Daten.php
 
Und deine Dateien die runtergeladen warden sollen liegen auf "/Filebase/..."?

Deine Web-Zugriffe werden aber immer auf "/var/www/" geleitet
 
Ja ich glaube das ist ein Debian-Problem.
Das Verzeichnis wo die Dateien liegen liegen im Hauptverzeichnis der Platte also unter /
Der Webserver greift die Website von /var/www/* ab.
Ich hätte da jetzt die Vermutung, das HTML denkt ich würde das Webverzeichnis /Filebase/* des Webservers also der nächste übergeordnete Ordner nehmen wollen. Allerdings will ich in den zwei Verzeichnisse tieferliegenden Ordner. Das ist evtl das Problem, da die Festplatte z.bsp unter Windows ja mit *:/ ausgezeichnet wird und es somit nicht erkannt wird.
 
Das ist kein Debian Problem das ist ein allgemeines Verständnisproblem von Webservern ins besondere Apache sowie Freigaben, Rechten, virtuelle Verzeichnisse etc.
 
Indem du die Dateien auf die du zugreifen willst z.B. unterhalb von /var/www/ liegen in dem auch dein PHP Script liegt, das wäre erstmal die einfachste Möglichkeit.

Was willst du denn damit genau bezwecken?

Ein einfacher Download von Dateien die du zuvor unter Debian bearbeitet hast? Dann würde auch ein FTP Server helfen können.
 
Zuletzt bearbeitet:
Es ist vor allem für selbstbildungszwecke gedacht, aber auch, da ich öfter mal Dateien, Bekannten zur Verfügung stellen muss, die nicht gleich Zugriff auf meine Cloud haben sollen.

Das funktioniert nun schon fast. Leider öffnet er mir einige Dateien wie .Txt Dateien und laden sie nicht runter
 
Zuletzt bearbeitet von einem Moderator:
Du hast drei Optionen, wovon ich dir nur eine empfehle:

1. Schiebe die Dateien in einen Ordner relativ zum PHP-Skript, also nach /var/www/...
2. Erlaube dem Webserver Zugriff auf alles ab dem Root, also / (nix gut)
3. Liefere die Dateien über das PHP-Skript aus (ist vmtl. auch erst nach Änderungen am Dateisystem bzgl. Zugriffsrechten möglich, und selbst dann: Statische Dateien sollten immer über den Webserver ausgeliefert werden)

Wo ist also das Problem?

Oder du legst einen extra vhost in deinem Webserver an, der eben nur auf /Filebase und alles darunter lesenden Zugriff hat. Das ginge doch auch?
 
Ja habe die Möglichkeit 1 genommen also die Dateien werden jetzt in dem Verzeichnis Dateien angeordnet, welcher eins über dem Verzeichnis der .PHP Datei liegt. Das funktioniert schon Mal fast so wie ich es mir gedacht habe.
Das Problem sind nicht .zip , .exe oder sonstige Dateien sondern .Txt und .desktop, da er die einfach im Browser öffnet anstelle sie herunterzuladen. Das ist jetzt zwar nicht so die Katastrophe aber auch nicht so ganz wie es funktionieren sollte.
 
Zurück
Oben