jacobmaster
25.05.2008, 10:19:23
Witam!
Czy istnieje możliwość tworzenia plików z poziomu php powyżej katalogu public_html?
Czy jest to w jakiś sposób uzależnione od ustawień apache?
phpion
25.05.2008, 11:00:49
Jest. Po prostu podajesz ścieżkę bezwzględną czyli pełną, np. /home/user/
jacobmaster
25.05.2008, 11:27:59
no jaużywam ścieżki bezwzględnej "uniwersalnej"
CODE
$_SERVER['DOCUMENT_ROOT'].'/../password.dat'
czyli w wyniku mam np.
/home/users/grupa1/podgrupa2/user1/public_html/../plik.dat
kiedy ręcznie wgram na server plik.dat to za pomoca tej ścieżki to php odczytuje i zapisuje bez problemu
ale jak nie ma pliku i chce go otworzyc z atrybutem w albo a albo nawet x to niestety nie tworzy pliku
l0ud
25.05.2008, 11:31:23
Nie tworzy pliku, bo PHP nie ma uprawnień zapisu dla tego folderu.
Mój pomysł: w katalogu nadrzędnym utwórz (obok public_html) inny folder, np. 'data', nastaw mu chmody 777.
Później już możesz łatwo tworzyć pliki używając ścieżki:
Kod
$_SERVER['DOCUMENT_ROOT'].'/../data/password.dat'
jacobmaster
25.05.2008, 11:59:07
to niestety dla mnie nie jest rozwiązanie...
szukam rozwiązania które nie będzie wymagało od użytkownika ręcznego wgrywania plików czy tworzenia katalogów
rozumiem że php nie ma uprawnień żeby tworzyć pliki czy katalogi powyżej public_html?
to dlaczego w takim razie może zapisywać do tych plików?
.radex
25.05.2008, 12:35:59
Słuchaj, właśnie rada l0ud rozwiązuje problem.
Kiedy stworzysz drugi katalog (brat public_html), np. właśnie data. Kiedy nadasz mu odpowiednie uprawnienia, php będzie mógł tam zapisywać. I nie user nie musi robić przesyłu ręcznie.
jacobmaster
25.05.2008, 23:01:22
źle mnie rozumiesz: pisze tu nie o jakimś konkretnym przypadku na jednym serwerze - nie byłoby w ogóle tematu - chodzi o funkcjonalność systemu który instalować będą użytkownicy na różnych serwerach (tak jak np cms) przy jednoczesnym zminimalizowaniu ręcznej ingerencji w pliki na serwerze.
Wszystko zależy od konfiguracji serwera (a konkretniej struktury i uprawnień plików/katalogów). Jeśli katalog nadrzędny od np. "public_html" będzie miał prawa zapisu dla wszystkich użytkowników lub ustawi się jego właściciela na użytkownika pod którym działa serwer www (+php) to wtedy i php będzie mogło tworzyć w nim nowe pliki...
l0ud
26.05.2008, 13:12:25
Jeżeli chcesz zrobić uniwersalny skrypt który będzie działał na (prawie) każdym serwerze, wiec że na wielu [słabszych] nie ma dostępu ponad katalog public_html. Po prostu umieść pliki konfiguracyjne bezpośrednio w public_html, w jakimś folderze, np. data i odpowiednio je zabezpiecz, aby nie dało się ich odczytać przez bezpośrednie wczytanie.
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.