Rolf B: PHP Zugriff auf Datein in anderen Verzeichnissen

Beitrag lesen

Hallo Tick,

was hier der beste Weg ist, hängt ein bisschen von der Projektstruktur ab. Ist /www/verzeichnis1 das Document-Root deines Webs? Sprich: Sind die Ordner v2/v3/v4 und /av5 alle unter deiner Hoheit?

Bei komplexen Ordnerstrukturen in einem Projekt, sollte man auf relative Adressierung verzichten. Wenn an tausend Stellen im Code kreuz und quer auf irgendwelche Pfade zugegriffen wird, betoniert man damit die Ordnerstruktur des Projekts und ist kaum noch im Stande, irgendwas zu reorganisieren.

Wenn alle Order im gleichen Document-Root liegen, sollte man sich diesen Ordner von PHP geben lassen ($_SERVER['DOCUMENT_ROOT']) und basierend darauf den Pfad zur Zieldatei aufbauen.

Zweitens sollte man in einer zentralen Include-Datei Konstanten zu solchen "wohlbekannten Speicherorten" definieren. Wenn die Exporte demnächst irgendwo anders landen, möchtest Du nicht alle Stellen suchen müssen, die darauf referenzieren.

Wenn z.B. das Document-Root /www/verzeichnis1 ist, solltest Du folgendes schreiben:

in der Konstanten-Includedatei

define("EXPORTE", "anderesVerzeichnis5/");

in der index.php

$exportfile = $_SERVER['DOCUMENT_ROOT'] . EXPORTE . "export.xml";

und mit diesem Dateinamen arbeiten.

Ganz anders sieht es aus, wenn dein Document-Root tiefer liegt (z.B. /www/verzeichnis1/verzeichnis2/verzeichnis3). In diesem Fall gehört der Exporte-Ordner einem fremden Web, und es ist aus meiner Sicht ganz schlechter Stil, zwei Webs auf einem Server mit Verzeichnisreferenzen zu verkuppeln. Mit $_SERVER['DOCUMENT_ROOT'] kommst Du dann sowieso nicht weiter, du müsstest die EXPORTE Konstante als absoluten Pfad festlegen. Das ist aber riskant - was ist, wenn der Serverbetreiber das zweite Web auf eine andere Maschine legt? Ein Zugriff über HTTP wäre dann aus meiner Sicht tatsächlich der richtige Weg, sofern die Exportdatei über HTTP erreichbar ist. SimpleXML kann z.B. eine XML Datei direkt aus einer http-Ressource laden.

Dedlfix hat den HTTP-Zugriff zwar gut lächerlich gemacht, aber wenn das DocumentRoot nicht auf /www/verzeichnis1 liegt, dann befindet sich die Speisekammer nicht im gleichen Haus wie die Küche und ein Bote, der genau weiß was er darf und was nicht, könnte eine gute Idee sein.

Gruß, auch an Trick und Track ;)
Rolf

--
sumpsi - posui - clusi