open-basedir
ladmotl
- php
0 Tom
Thema: DIREKTIVE OPEN_BASEDIR
Es gibt zwei php.ini in /etc. Eine für Apache und eine für Batch.
Wenn man in der ...cli/php.ini eine open_basedir direktive versorgt,
dann darf man im Batch nur die Pfade der Ordner für die php-scripts verwenden,
die in dieser Direktive angegeben sind.
Wenn man in der ...apach2/php.ini eine open_basedir Direktive versorgt,
dann wird diese Direktive ignoriert, bzw. sie wird aus der vhost.conf
in die httpd.include aufgenommen. in der vhost.conf muss müssen
bei der open-basedir Direktive alle Pfade aller Ordner angegeben
werden, aus den man funktionen aufrufen will.
Das Problem ist, dass in allen Subdomains und Domains eine globale
Directory, in der sich allgemeine php-scripts (functions, methods) befinden,
die für alle Domains/Subdomains verwendbar sind (aufgerufen werden können),
die Datei vhost.conf ändern muss, wenn der Pfad des globalen Ordners
sich ändert.
Zum Zeitpunkt einer Entwicklung eines umfangreichen Projekts ändert sich ständig
etwas. Nach dem Motto 'NIX IS FIX'.
open_basdir muss immer alle Pfade aller php-Ordner pro <Directory>-Tag
beinhalten. Das heisst auch die Pfade, die ohne die open-basedir funktionieren
würden.
Wenn z.B. 2 domains mit je 5 Subdomains in Plesk definert sind, muss man 10-mal
die vhost.conf ändern.
Warum gibt es nicht irgendwo eine bessere Möglichkeit. Warum kan man nicht eine
additive Directive (z.B. add-open-basedir) definieren, die zentral in einer
php.ini versorgt werden kann?
Beispiel: add-open-basedir "/srv/www/vhosts/public.de/httpdocs"
(Oder meinetwegen diese 'nur' in der vhost.conf)
Mit freundlichen Grüßen
L. Motl
Hello,
open_basedir ist eine Eisntellungs-Möglichkeit, mit der sich PHP selbst beschränkt auf den zur Einstellung passenden Pfad. Dabei ist die Angabe nicht tatsächlich der Pfad, sondern nur das Muster, auf dass der Pfad passen muss.
Wenn Du also /home/tom/htdocs/bild angibst, dann passet das auch für
/home/tom/htdocs/bilder und für
/home/tom/htdocs/bildupload/n13 und für
usw.
Open_basedir kann für jeden Virtual Host getrennt angegeben werden.
Dein Problem scheint aber PLESK zu sein. Wo stellst Du das denn bei PLESK überheupt ein? Du solltest nicht direkt in die Konfigurationsdateien eingreifen, sondern das über PLESK machen (wenn es denn geht... *uff*).
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg