Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: open_basedir
Forum PHP.pl > Forum > Serwery WWW
Apo
Witam
Mam zainstalowanego apache 2 na windows xp. Ostatnio ustawiłem open_basedir w pliku php.ini:
open_basedir = "G:/WebServ/httpd-users"

No i mam pytanie czy można wprowadzić wyjątek że będzie dostęp do folderu np:
G:\WebServ\apache2\error

No i druga sprawa jest taka że w open_basedir ustawiłem dostęp do folderów G:/WebServ/httpd-users wszystkim użytkownikom: localhost/~maciek, localhost/~kreciu itd, no i głównej stronie localhost/ no i czy można odblokować dostęp to plików poniżej dla samej strony localhost/, a pozostawić zablokowane dla innych ?

Pozdrawiam
ARJ
Cytat(Apo @ 13.06.2006, 16:50 ) *
No i mam pytanie czy można wprowadzić wyjątek że będzie dostęp do folderu np:
G:\WebServ\apache2\error

witam.
nie jestem ekspertem w konfiguracji apacha ale chyba o to chodzi.
do pliku httpd.conf dopisz coś w tym stylu:
Cytat
Alias /err/ "C:/Program Files/Apache2/error/"

<Directory "C:/Program Files/Apache2/error/">
Options FollowSymLinks Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

czyli wchodząc z własnego kompa http://localhost/err/ otworzy się folder error apacha.
FiDO
Cytat(manual)
Under Windows, separate the directories with a semicolon. On all other systems, separate the directories with a colon. As an Apache module, open_basedir paths from parent directories are now automatically inherited.
siemakuba
Trzeba jeszcze pamiętać o jednej ważnej rzeczy. open_basedir nie wskazuje domyślnie na katalog (!!) a jedynie jest wzorcem!

taki zapis:
Kod
open_basedir = "G:/WebServ/httpd-users"
spowoduje, że skrypt będzie miał dostęp do każdego katalogu w G:/WebServ/ którego nazwa zaczyna się od httpd-users, np. G:/WebServ/httpd-users-super-secret

taki zapis już nie:
Kod
open_basedir = "G:/WebServ/httpd-users/"
(slash na końcu)

pozdr.
Apo
Thx za odpowiedzi smile.gif

Mam jeszcze pytanie.
Mój open_basedir wygląda tak:
Kod
open_basedir = "G:\WebServ\httpd-users\;G:\WebServ\httpd\;G:\WebServ\apache2\error\"


No i jest problem bo np użytkownik bartek czyli: G:\WebServ\httpd-users\bartek
może odczytać pliki użytkownika adas: G:\WebServ\httpd-users\adas lub nawet strone główną serwera
G:\WebServ\httpd\ :/
No i pytanie brzmi czy i jak można zrobić coś jakby przydział odpowiednich grup dla open_basedir aby każdy użytkownik mógł siedzieć we własnym folderze :?:

Pozdrawiam
FiDO
Da sie, ale jest jeden problem.. Musial bys to ustawiac recznie dla kazdego katalogu z osobna :/

Kod
<Directory G:\WebServ\httpd-users\bartek>
  php_admin_value open_basedir G:\WebServ\httpd-users\bartek
</Directory>


i tak dla kazdego katalogu. Nie znam sposobu na zautomatyzowanie tego, ale chetnie bym poznal jesli takowy istnieje.
Apo
Zrobiłem tak jak piszesz FiDO:

Kod
open_basedir = "G:\WebServ\httpd-users\;G:\WebServ\httpd\;G:\WebServ\apache2\error\"

<Directory G:\WebServ\httpd-users\bartek>
  php_admin_value open_basedir G:\WebServ\httpd-users\bartek
</Directory>


Ale to nic nie robi i mam i tak dostęp do innych kont ;/
siemakuba
A czy nie jest tak, że przy takim usatwieniu jak podałeś ustawiona w Directory wartosc open_basedir dopisze sie do pozostalych, podanych w php.ini? Nie wiem jaki jest priorytet nadawania tej wartosc przez php.ini /apache. daj w katalogu dla ktorego ustawiales open_basedir w php -> ini_get('open_basedir'); i zobacz co zagada - czy wszystkie sciezki (wtedy jase wszystko), czy tylko te ustawiona dla uzytkownika (wtedy niejasne dlaczego mozesz czytac cokolwiek z poza open_basedir).

pozdr.
Apo
siemakuba funkcja zwraca mi:
Kod
G:\WebServ\httpd-users\;G:\WebServ\httpd\;G:\WebServ\apache2\error\.

Czyli directory wyrzuca za kazdym razem, nawet jak daje przed i po basedir ;/
siemakuba
hmmm... spróbuj w ramach testu dać w php_admin_value open_basedir jakiś katalog "z dupy", w sensie zupełnie inny od pozostałych, nawet z poza DocumentRoot np. "C:\Windows\" i zobacz co wyrzuci ci ini_get('open_basedir');

katalog G:\WebServ\httpd-users\bartek jest przecież katalogiem podrzędnym dla G:\WebServ\httpd-users\. Skoro więc możesz otwierać wszystko z G:\WebServ\httpd-users\, to tym bardziej możesz otwierać wszystko z G:\WebServ\httpd-users\bartek, rajt?

Być może te ustawienia są mergowane, i stąd nie widać w ini_get('open_basedir') katalogu G:\WebServ\httpd-users\bartek?

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.