Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> unlink safe mode, nie działa unlink przy włączonym safe mode
Brick
post
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:
  1. <?php
  2. umask(0);
  3. mkdir ("$dir/$filename",02777);
  4. ?>


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
Go to the top of the page
+Quote Post
nitro18
post
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
Brick
post
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
Go to the top of the page
+Quote Post
Pilsener
post
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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 20:03