open_basedir restriction trotz korrektem Pfad

open_basedir restriction trotz korrektem Pfad

am 13.09.2005 13:33:46 von Jockel Hofmann

Xpost, weil ich nicht genau weiß, wo's hingehört.
Fup2 de.comp.lang.php.misc

Ein simples fopen treibt mich gerade in die Verzweiflung:

Ich versuche eine Datei zu erstellen, die von mehreren (Sub-)Domains
gemeinsam benutzt wird. Die betreffende Zeile:

if (!file_exists($pfad . "inc/" . $adm_varname . ".inc"))
....
$adm_file = fopen($pfad . "inc/" . $adm_varname . ".inc", 'w');

Das Ergebnis:

Warning: fopen(): open_basedir restriction in effect. File(/home/httpd
vhosts/1234-shop.de/subdomains/shop/httpdocs/inc/adm_liste_E inbandart.inc)
is not within the allowed path(s): (/home/httpd/vhosts/1234-shop.de
subdomains/shop/httpdocs:/home/httpd/vhosts/1234-shop.de/htt pdocs:/tmp:
home/httpd/vhosts/shop-c.de/httpdocs:/home/httpd/vhosts/1234 -shop.de
statistik/webstat) in /home/httpd/vhosts/1234-shop.de/httpdocs/inc
adm_artikel.inc on line 747

Ich habe drei mal geschaut: Der Pfad, in dem sich das Skript befindet, ist
korrekt, außerdem werden aus diesem Pfad reichlich andere Skripte
erfolgreich includiert, nur nicht geschrieben.

Sowohl das aufrufende Skript als auch das Verzeichnis "inc" gehören
wwwrun.nogroup und haben die Rechte drwxr-xr-x

Aufgerufen wird das Skript in der Doc-Root der Subdomain. Das dortige
"Verzeichnis" httpdocs ist ein sym-link auf das Verzeichnis httpdocs der
Hauptdomain. Rufe ich das Skript aus der Hauptdomain auf, funktioniert es,
die Datei wird erstellt. Rufe ich danach wieder aus der Subdomain auf, wird
die Datei wunderbar eingelesen, lösche ich sie, kann sie wieder nicht
geschrieben werden.

Irgend eine Idee, warum? Hat fopen Probleme mit Sym-Links und PHP mit einer
passenden Fehlermeldung? Oder stehe ich Betonschwer auf dem Schlauch?

TIA,

:-) Jockel

--
Signatur wegen Erschöpfung zur Zeit im Urlaub

Re: open_basedir restriction trotz korrektem Pfad

am 18.09.2005 10:37:15 von Johannes Vogel

Hi Jockel

Jockel Hofmann wrote:
> Ich habe drei mal geschaut: Der Pfad, in dem sich das Skript befindet, ist
> korrekt, außerdem werden aus diesem Pfad reichlich andere Skripte
> erfolgreich includiert, nur nicht geschrieben.
> Sowohl das aufrufende Skript als auch das Verzeichnis "inc" gehören
> wwwrun.nogroup und haben die Rechte drwxr-xr-x
>
> Aufgerufen wird das Skript in der Doc-Root der Subdomain. Das dortige
> "Verzeichnis" httpdocs ist ein sym-link auf das Verzeichnis httpdocs der
> Hauptdomain. Rufe ich das Skript aus der Hauptdomain auf, funktioniert es,
> die Datei wird erstellt. Rufe ich danach wieder aus der Subdomain auf, wird
> die Datei wunderbar eingelesen, lösche ich sie, kann sie wieder nicht
> geschrieben werden.

Fahren die beiden Subdomains tatsächlich dieselben Users? Du kannst das
im Apache prüfen, oder noch besser per phpinfo().

HTH, Johannes

Re: open_basedir restriction trotz korrektem Pfad

am 19.09.2005 08:56:52 von Jockel Hofmann

Johannes Vogel am Sonntag, 18. September 2005 10:37:

> Hi Jockel
>
> Jockel Hofmann wrote:
>> Ich habe drei mal geschaut: Der Pfad, in dem sich das Skript befindet,
>> ist korrekt, außerdem werden aus diesem Pfad reichlich andere Skripte
>> erfolgreich includiert, nur nicht geschrieben.
>> Sowohl das aufrufende Skript als auch das Verzeichnis "inc" gehören
>> wwwrun.nogroup und haben die Rechte drwxr-xr-x
>>
>> Aufgerufen wird das Skript in der Doc-Root der Subdomain. Das dortige
>> "Verzeichnis" httpdocs ist ein sym-link auf das Verzeichnis httpdocs der
>> Hauptdomain. Rufe ich das Skript aus der Hauptdomain auf, funktioniert
>> es, die Datei wird erstellt. Rufe ich danach wieder aus der Subdomain
>> auf, wird die Datei wunderbar eingelesen, lösche ich sie, kann sie wieder
>> nicht geschrieben werden.
>
> Fahren die beiden Subdomains tatsächlich dieselben Users? Du kannst das
> im Apache prüfen, oder noch besser per phpinfo().

Hauptdomain: User/Group wwwrun(30)/8
Subdomain: User/Group wwwrun(30)/8

sieht irgendwie gleich aus.

Das betreffende Verzeichnis: drwxr-xr-x 5 wwwrun users (auch ein chmod 777
änderte nichts - nur so zum Test)

Die Docroot der Hauptdomain: drwxr-xr-x 8 wwwrun nogroup

Der Symlink, der in der Subdomain auf die Hauptdomain zeigt:

lrwxrwxrwx 1 wwwrun nogroup

Sieht für mich alles ok aus.

:-) Jockel

--
Signatur wegen Erschöpfung zur Zeit im Urlaub