PHP - Verzeichnisse außerhalb Document-Root

Soka

Angesehenes Mitglied
Hallo zusammen,
kennt jemand eine Möglichkeit mit PHP auf ein auf ein Verzeichnis außerhalb Document-Root zuzugreifen ?

Hier mal ein Beispiel:
Document-Root - /srv/www/vhosts/meineseite.de/httpdocs/index.php
nun möchte ich aber auf z.B. /srv/www zugreifen

Mir ist nun die Möglichkeit bekannt, via SSH2-Library auf solche Verzeichnisse zuzugreifen.
Jedoch wäre mir eine reine PHP-Lösung lieber, also ohne extra Library.
Evtl. mit fsocketopen oder ändern der Verzeichnisrechte ?

Google spuckt leider nichts brauchbares aus.
Evtl. kennt hier noch jemand ne alternative Möglichkeit.

Gruß
Peter
 
Grundsätzlich funktioniert das genau gleich, wie wenn du sonst eine Datei oder ein Verzeichnis liest (fopen etc.).

Es gibt jedoch einige Einschränkungen:
- Der Benutzer, unter welchem PHP ausgeführt wird, muss über die nötigen Lese-/Schreib-Rechte für das Verzeichnis/die Datei verfügen.
- Bei aktiviertem safe_mode mit open_basedir Restriktion wirst du ggf. nur auf dein Doc-Root Verzeichnis zugreifen können.

Nach meinen Erfahrungen, war das vor allem bei Plesk/Confixx-basierten Shared-Hostings ein Problem. Ich weiss allerdings nicht, ob und inwiefern sich diese Systeme nicht auch anders konfigurieren liessen.
 
Wenn das Verzeichnis für den www-User lesbar ist (das sollte in den meisten Fällen so sein), kann man (sofern in der php.ini keine entsprechenden Beschränkungen eingetragen sind, s.o.) das problemlos mit include_once() machen.

Das ist übrigens sinnvoll bei gespeicherten Konfigurationen (DB-Password o.ä.).
 
Ja, aber, wie gesagt, nur, wenn keine open_basedir Restriktion greift. Sofern es eine Einschränkung gibt, nützt es auch nichts, wenn der WWW-User die entsprechenden Rechte hat.

QUOTE open_basedir
Limit the files that can be opened by PHP to the specified directory-tree, including the file itself. This directive is NOT affected by whether Safe Mode is turned On or Off.

When a script tries to open a file with, for example, fopen() or gzopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to open it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink. If the file doesn't exist then the symlink couldn't be resolved and the filename is compared to (a resolved) open_basedir.


Quelle: http://ch2.php.net/safe_mode
 
Mit dem Open Basedir kann man auch mehrere Pfade hinterlegen, auch Rekursiv / Nicht rekursiv. Benötigt halt die entsprechenden Rechte um an die PHP.ini bzw. vhost-Configs zu kommen.
 
Zurück
Oben