Frage von Evergreen89, 42

Wie kann ich Dateien außerhalb des DocumentRoot (open_basedir) uploaden?

Hallo, ich bastel mit derzeit ein eigenes CMS. In dem kann man dann diverse Dateien (Bilder, PDF ...) hochladen. Allerdings landen die Dateien dann außerhalb des DokumentRoot.

Zuerst mal kurz die Struktur auf dem Server:

/html/cms/ <- erreichbar unter cms.domain.de

/html/files/images/ <- erreichbar unter images.domain.de

Um es kurz zu sagen, gelingt es mit nicht, Datei außerhalb des DokumentRoots (/html/cms/) in ein anderes Verzeichnis (/html/files/...) hochzuladen. Beim ausführen der Funktion move_uploaded_file() erhalte ich dann den Fehler Warning: file_put_contents(): open_basedir restriction in effect. File(/.../.../beispiel.pdf) is not within the allowed path(s)

Nun kommt das Spiel mit open_basedir, womit ich bislang nie etwas am Hut hatte. Über den Serveranbieter kann ich die Einstellung dazu aktivieren oder deaktiveren (habe kein Zugriff auf die php.ini). Jetzt würde ich gerne dem CMS den Zurgiff auf das Files-Verzeichnis gestattet um die Datei dort hochzuladen, weiß aber nicht wie. Google habe ich bereits benutzt, konnte aber nicht wirklich hilfreiches finden.

Antwort
von happyfish2, 32

Auch wenn es dir jetzt nicht unbedingt weiterhilft, aber warum willst du das machen? Wenn du ein CMS programmierst dann sollten doch Bilder und PDFs auch irgendwie erreichbar sein, oder nicht? Wenn die dann außerhalb des docroot liegen wird die keiner zu Gesicht bekommen.

Kommentar von Evergreen89 ,

Die sollen dann von der öffentlichen Webseite selbst erreichbar sein.

Kommentar von happyfish2 ,

Werden sie aber nicht, wenn sie außerhalb des docroot liegen. Daher macht das eben keinen Sinn.

Kommentar von Evergreen89 ,

Möglich, das ich den Begriff "DocumentRoot" falsch verstanden habe. Die jeweiligen Ordner (cms, files) sind mit der Subdomain erreichbar.

Antwort
von webflexer, 22

Du kannst es mit ini_set probieren:

<?php
ini_set('open_basedir', '/html/files/');
?>
Kommentar von geheim007b ,

sofern aktiviert... ansonsten in der Apacheconfig

Antwort
von Evergreen89, 12

Habe übersehen, das ich open_basedir auch für einzelne Subdomains ausschalten kann. Nun geht es ohne Probleme.

Keine passende Antwort gefunden?

Fragen Sie die Community