![]() |
![]() |
![]() ![]()
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 -------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj nadać im uprawnienia po utworzeniu: chmod
edit> Pamiętaj że w komentarzach do tej funkcji też mogą być pomocne informacje. Ten post edytował starach 21.03.2010, 18:51:33 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Automatyczne tworzenie plików poprzez funkcje typu fopen czy file_put.. podlega ograniczeniom. Spróbuj do utworzenia pliku użyć funkcji:
http://pl.php.net/manual/pl/function.touch.php Wszystko wskazuje też na to, że serwer jest źle skonfigurowany (w safe mode nie wiem po co sprawdzane jest, czy właścicielem uruchamianego skryptu lub pliku, do którego funkcja chce uzyskać dostęp, jest ten sam użytkownik). Spróbuj także nadać chmody folderom (poprzez php oczywiście) a przed każdą akcją sprawdzać, czy mamy odpowiednie uprawnienia. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie da się wykonać CHMOD-ów, touch() nie pomaga, w komentarzach jest jakieś obejście, ale jednak chyba pozostaje tworzyć foldery przez FTP. Nie rozumiem, dlaczego skrypt nie może tworzyć plików w stworzonych przez siebie folderach.
-------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie rozumiem, dlaczego skrypt nie może tworzyć plików w stworzonych przez siebie folderach - spotkałem się z tym na darmowych serwerach, skrypt może utworzyć plik, ale nie możesz go np. skopiować przez ftp, jest w jakiejś "kwarantannie" (czy coś podobnego), ma stałe chmody i nie można ich zmienić - zgaduje, że w przypadku folderów pewnie jest podobnie, tyle, że o ile w przypadku plików użycie touch pomagało, to w przypadku folderów chyba nie ma wyjścia? Pozostaje tworzyć je ręcznie lub zabiegać o poprawienia konfiguracji serwera.
|
|
|
![]()
Post
#6
|
|
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 ![]() Ten post edytował WebCM 23.03.2010, 17:38:55 -------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 18:43 |