open_basedir...is not within the allowed path(s)

Alles, was den Apache betrifft, kann hier besprochen werden.

open_basedir...is not within the allowed path(s)

Postby lazarus71 » 02. March 2008 18:48

Hallo,

open_basedir restriction in effect. File(/pfad/test.php) is not within the allowed path(s):

besagt ja, das der Pfad über die Apache Restritionen nicht erlaubt ist.

Folgendes Problem. Ich möchte ein Verzeichnis außerhalb von docroot über php erreichen. Ich möchte über eine Loginprozedur erreichen, das ein Benutzer nach erfolgreichem Login auf Dateien zugreifen kann, die außerhalb von docroot liegen. Ich will das nur php auf das externe Verzeichnis zugreifen kann und der Aufruf nicht direkt über den Pfad möglich ist.

Ich habe schon sehr viel geGoogelt und finde einfach nicht das passende. Ich kenne mich in Apache auch nicht besonders aus. Ich musste das System wegen einem personellen Notfall übernehmen.

Kann mir vielleich jemand Haarklein erlären wie ich über PHP auf ein externes Verzeichnis zugreifen kann, ohne die Sicherheit des Servers zu gefährden. Ich habe auch schon mit directory gespielt, bekomme es aber nicht hin, ohne das der Pfad nicht auch direkt angesprochen werden kann.

Bei dem Server- System handelt es sich um ein Debian: phpinfo:

Apache/2.2.3 (Debian) PHP/5.2.0-8+etch10 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_perl/2.0.2 Perl/v5.8.8

Es wäre wirklich sehr nett, wenn mich hier jemand an die Hand nehmen kann, welche Config Dateien ich im Apache anpassen muss, damit das so funktioniert wie ich es oben erwähnt habe, da mir hier leider die Kenntnisse fehlen.

Ich hoffe das die Infos ausreichen, wenn nicht reiche ich diese nach.

Im Voraus vielen Dank für eure Hilfe.

Gruß Lazarus
Selbst im schönsten Blumengarten findet der Mistkäfer ein Stück Scheisse ;)
lazarus71
 
Posts: 4
Joined: 27. February 2008 16:16

Postby Wiedmann » 02. March 2008 19:36

open_basedir restriction in effect. File(/pfad/test.php) is not within the allowed path(s):

besagt ja, das der Pfad über die Apache Restritionen nicht erlaubt ist.

open_basedir ist eine Einschränkung von PHP und nicht vom Apache.
--> http://de.php.net/manual/en/features.sa ... en-basedir
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby lazarus71 » 02. March 2008 21:12

Hallo Wiedmann,

ok, wie gesagt ich kenne mich bei diesem Thema nicht aus. Kannst du mir denn auch sagen was und wo ich es einstellen muss, damit ich über php an die extern abgelegten Verzeichnisse komme und welche Nachteile es eventuell hat, bez. Sicherheit und so?????
Selbst im schönsten Blumengarten findet der Mistkäfer ein Stück Scheisse ;)
lazarus71
 
Posts: 4
Joined: 27. February 2008 16:16

Postby Scory » 02. March 2008 22:00

Witzbold.

Dann kann man Dir auch gleich "haarklein" erklären, wie Linux funktioniert.
Scory
 

Postby lazarus71 » 03. March 2008 07:15

@ scory: kannse doch mal machen, oder..........irgendwann hat Pappa dir doch auch erklärt, wo die Blümche den Eingang haben ;)

@ Wiedemann: thx
Selbst im schönsten Blumengarten findet der Mistkäfer ein Stück Scheisse ;)
lazarus71
 
Posts: 4
Joined: 27. February 2008 16:16

Postby lazarus71 » 06. March 2008 16:49

Hallo nochmal,

ich habe in vielen Foren gesehen, das es oft falsche Antworten oder gar keine gegeben hat. Deswegen möchte ich hier nochmal die in meinem Fall funktionierende Lösung präsentieren:

Also open_basedir sagt aus, auf welche Verzeichnisse PHP zugreifen darf. Jetzt kommt es darauf an ob der Server für mehrere Domains konfiguriert ist (Virtuelle Hosts) oder ob nur eine Domain darauf läuft. Im Klartext, wenn ein Server z.B. die IP-Adresse 214.23.24.217 hat und ein und der selbe Server ist für mehrer Domains eingerichtet, wird bei einem Ping auf die jeweilige Domain z.B. test.domain.de oder test2.domain2.de die selbe IP-Adresse zurückgegeben.

Dies ist möglich da man dem Apache in der Konfiguration unter entsprechenden Konfig Datei mehrere VirtualHosts einrichten kann. So kann der Server die unterschiedlichen Domains an eine IP-Adresse binden. Die Konfig Datei für die Virtuellen Hosts muss man dann entsprechend für das System in Erfahrung bringen (Googeln). Man kann diese natürlich auch vom Standard aus umbiegen.

Ein Eintrag sieht z.B. so aus:

<VirtualHost 214.23.24.217:80>
ServerName test.domain.de
ServerAlias www.test.domain.de
ServerAdmin user@test.domain.de
DocumentRoot "/var/sites/http/kunde1/"
php_admin_value open_basedir "/var/sites/http/kunde1/:/tmp/:/usr/bin/php5/:/var/sites/sicher/"
php_admin_flag safe_mode Off
Alias /webalizer "/var/kunden/webs/web1//webalizer/domain.de"
ErrorLog "/var/sites/logs/domain.de-error.log"
CustomLog "/var/sites/logs/domain.de-access.log" combined
</VirtualHost>


Für jede Domain kann man dann diesen Eintrag vornehmen. Dies hier bezieht sich auf mehrere Domains. Oben sagt dieser Eintrag (php_admin_value open_basedir "/var/sites/http/kunde1/:/tmp/:/usr/bin/php5/:/var/sites/sicher/") aus auf welche Dateien zugegriffen werden darf. Mehrere verschiedene Dateien müssen mit einem Doppelpunkt voneinander abgegrenzt werden.

Läuft auf dem Server nur eine Domain muss man in der php.ini den Eintrag open_basedir suchen und das Verzeichnis auf das PHP zugreifen soll zusätzlich eintragen. Also genau so:

open_basedir = "/var/sites/http/kunde1/:/tmp/:/usr/bin/php5/:/var/sites/sicher/"

Hier soll zusätzlich neben dem Standard auf das Verzeichnis /var/sites/sicher/ zugegriffen werden. Am Ende ist der Backslash von Bedeutung da man mit Backslash auf alle Dateien in dem Ordner zugreifen kann.

So hat es bei mir ohne Probleme geklappt. Wichtig ist noch das das entsprechende Verzeichnis Leserechte für PHP enthält.

Sollten was falsch Erklärt sein, einfach meckern!!!! :D

Gruß Lazarus
Selbst im schönsten Blumengarten findet der Mistkäfer ein Stück Scheisse ;)
lazarus71
 
Posts: 4
Joined: 27. February 2008 16:16


Return to Apache

Who is online

Users browsing this forum: No registered users and 34 guests