![]() |
![]() |
![]() ![]()
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 |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 20:10 |