![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Na serwerze włączony jest safe mode
Pliki wgrywane przez PHP do katalogu utworzonego przeze mnie (FTP) mogą być kasowane przez PHP (unlink). Pliki wgrywane do katalogu utworzonego przez PHP nie mogą być kasowane, unlink zwraca błąd: Warning: SAFE MODE Restriction in effect. The script whose uid is 1035 is not allowed to access ../uploaded/test/obrazek.jpg owned by uid 33 in Tworzenie katalogu "test" przez php wygląda tak:
Utworzony katalog ma wtedy prawa 777 Wgrany plik przez PHP otrzymuje prawa 755 chmod oczywiście nie zadziała, zresztą nie o prawa tu chyba chodzi co o ten UID. Jest inny i nie wiem czemu (obie operacje wykonuje PHP). Jest jakiś sposób na skasowanie takiego pliku przez PHP ? (Wszystko działa dobrze na serwerach gdzie safe mode jest wyłączony) -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 7 Dołączył: 2.08.2006 Skąd: Bystrzyca Kłodzka/Nysa Ostrzeżenie: (10%) ![]() ![]() |
chmod to chyba chmod($plik,0755) a nie 02777.
=> http://pl2.php.net/manual/pl/function.chmod.php a odnośnie unlink(), zadziała nawet przy włączonym safe mode i wtedy i tylko wtedy gdy ścieżka do pliku jest prawidłowa. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
chmod to chyba chmod($plik,0755) a nie 02777.
Można pisać 02777, 02 dotyczy GID, czyli ID grupy do której należy katalog. Wtedy wszystkie pliki zapisywane do tego katalogu będą otrzymywały GID tego katalogu, a nie GID użytkownika, który wgrywa plik. Niestety to nic nie pomaga w moim przypadku, ponieważ, gdy jest włączony SAFE MODE funkcja UNLINK sprawdza UID a nie GID Cytat Unlink sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. W moim przypadku PHP pracuje jako użytkownik o UID=33 Użytkownik FTP ma UID=1035 Gdy tworzę katalogi lub pliki przez PHP to otrzymują one UID=33 Gdy skrypt PHP kasuje plik w katalogu utworzonym przez PHP to otrzymuję komunikat "The script whose uid is 1035..." Kompletnie bez sensu, wynika z tego że przy operacji unlink PHP ma inne UID niż przy innych operacjach. Nie udało mi się tego rozwiązać i wynika z tego, że to są jakieś dziwne ustawienia serwera -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Z tego co coś mi dzwoni, to w SAFE MODE jest ograniczony dostęp do plików tworzonych "w locie" przez skrypt (np. funkcją fopen). Ja poradziłem sobie funkcją touch. Sprawdzałeś na innych serwerach? Przetestuj na jakimś darmowym hostingu z włączonym SAFE MODE.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:03 |