Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Safe Mode - jak obejść?, tworzenie plików w folderach utworzonych przez skrypt
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Po wgraniu plików na serwer przez FTP układ katalogów jest następujący:

cache (0 folderów, 1 plik)
cfg (0 folderów, kilka plików)

Admin nadaje im uprawnienia: 777, a plikom wewnątrz - 666

Następnie odpala instalator. Skrypt tworzy w katalogu cache następne foldery:

default
install


Teraz instalator (kompilator szablonów) próbuje umieścić w nich pliki:

body.html
form.html


Z niepowodzeniem. Wyskakuje błąd:
Cytat
Warning: file_put_contents() [function.file-put-contents]: SAFE MODE Restriction in effect. The script whose uid is 10012 is not allowed to access [ciach!]cache/default owned by uid 1000 in [ciach!]compiler.php on line 173

Z komunikatu wnioskuję, że użytkownik, na którym działa skrypt, ma UID = 10012, a folder - 1000.

Przecież to skrypt stworzył ten folder!

Co robić, aby skrypt był zgodny z SAFE MODE?

Na wielu serwerach jest safe_mode, ale nie na wszystkich występują takie dziwne problemy (tu: darmowy pdg.pl)

Znam rozwiązanie: tworzyć wszystkie katalogi za pomocą FTP, nadać im 777, a dopiero pozwolić skryptom ładować tam swoje pliki. Sposób nie satysfakcjonuje mnie do końca.

Jak obejść SAFE MODE, aby skrypty mogły tworzyć pliki w folderach?

Ten post edytował WebCM 21.03.2010, 18:13:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
WebCM
post
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Czyli można założyć, że taka sytuacja zajdzie na KAŻDYM serwerze z włączonym safe_mode?

Skrypt tworzy katalog z prawami 777. Zarówno is_readable i is_writable zwracają PRAWDA. Gdy skrypt już utworzy ten folder, jest za późno na jakiekolwiek działania. Trzeba go usunąć i dodać na nowo przez FTP.

Jest jeszcze opcja safe_mode_include_dir, ale chyba zapomniana. W tej sytuacji chyba powyższy problem by nie wystąpił.

Poniższy algorytm byłby w takim razie bez sensu:

1. Sprawdź, czy tryb bezpieczny jest aktywny
2. Jeśli TAK, wyświetl komunikat, że folder trzeba stworzyć ręcznie przez FTP
3. Jeśli NIE, utwórz katalog i zapisz w nim niezbędne pliki

Pogubiłem się w tym wszystkim. Wynalazki typu safe_mode_include_dir albo open_basedir nic nie zmienią, gdy PHP pracuje zawsze z tego samego użytkownika. Wprawdzie open_basedir można ustawiać lokalnie od PHP 5.3, ale sprawnie to będzie działać na dobrze skonfigurowanych hostingach.

Zatem zabezpieczenie, że skrypt nie może stworzyć pliku we własnym katalogu, jest celowe (IMG:style_emoticons/default/smile.gif)

Ten post edytował WebCM 23.03.2010, 17:38:55
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 20:10