Dateien aus anderem vHost includen (selber Root Server). Fehler: is not within the allowed path(s)

bananajo

New Member
Hallo,

ich habe einen Shop, den ich "kopieren" möchte. Diese laufen auf dem selben Root Server, aber unter verschiedenen Domains, die wiederum nur andere Produkte anbeten. Das System ist das gleiche.

Ich will, das die Kopie auf einige Dateien den Haupt-Shops zugreift, so dass ich Änderungen nur an einer zentralen Stelle erledigen muss, und die selben Dateien nicht für jeden Shop einzeln hochladen muss, so dass jeder Shop die selben Dateien nutzt.

Leider bekomme ich eine Fehlermeldung, wenn ich über einen relativen Pfad, PHP Dateien aus dem Hauptshop includen will. Das Problem tritt nur online auf. Lokal läuft die Kopie perfekt über die Dateien des haupt Shops.

Alle vHosts befinden sich auf dem gleichem Root Server, aber sind eben unterschiedliche Webseiten.

Hier die Verzeichnisstruktur:

Shop 1: (Haupt Shop)
Code:
/var/www/vhosts/shop_1.de/httpdocs/
Shop 2: (Kopie)
Code:
/var/www/vhosts/shop_2.de/httpdocs/

Wenn ich nun in Shop 2 eine PHP Datei aus Shop 1 includen möchte (selber Root Server)

PHP:
//in Shop 2
include('/var/www/vhosts/shop_1.de/httpdocs/includes/config.php');
erhalte ich folgende Fehlermeldung:

Code:
Warning: include(): open_basedir restriction in effect. File(/var/www/vhosts/shop_1.de/httpdocs/includes/config.php) is not within the allowed path(s): (/var/www/vhosts/shop_2.de/:/tmp/) in
Hat jemand Ideen, wie ich das online auf dem selben Root Server, vHost übergreifend, zum laufen bekomme?

Vielen Dank für jeden Vorschlag!
 

danton

Debian User
Erste Voraussetzung ist, dass der User von der Webseite von Shop 2 zumindest Leserechte für die Verzeichnisse von Shop 1 hat - ob das der Fall ist, kann ich ohne nähere Kenntnis deiner Konfiguration nicht sagen.
Der zweite Grund, warum es nicht funktioniert, steht doch in der Fehlermeldung: Es gibt eine open_basedir Einschränkung in der php.ini für den vHost von Shop 2.
 

bananajo

New Member
Danke für die schnelle Antwort!
Dann muss ich also open_basedir so einstellen?

/var/www/vhosts/:/tmp/

verändert das dann alle anderen relativen Pfade im Projekt die so eingebunden sind?

include('../../dir/file.php');
 

danton

Debian User
Prinzipiell ja, aber eigentlich zu umfangreich. Und nein, es erfolgt keine Umschreibung. open_basedir erlaubt dir nur, Dateien aus den dort aufgeführten Verzeichnissen (inkl. Unterverzeichnisse) zu includen.
Beim include mit relativen Pfaden bitte aufpassen - diese sind relative zum Hauptscript und nicht zu der Datei, in der der include-Befehl steht (kann identisch sein, muss aber nicht). Das lässt sich umgehen, indem man sich im PHP-Code den absoluten Pfad baut:
PHP:
require(dirname(__FILE__)."/includes/config.php");
Damit liegt die Datei config.php relativ zur Datei mit dem include-Befehl im Unterverzeichnis includes
 
Top