2013-09-26 18 views
6

Próbuję usunąć zdjęcie w php za pomocą odłączenia. Użyłem go wcześniej na innym serwerze, ale tym razem nie działa. Użyłem bezwzględnej ścieżki do testu, ale nadal nie działa:Odłączenie PHP Nie działa

Użyłem go jako: odłączyć ("img1.jpg");

oraz:

unlink('http://www.mysite.com/img1.jpg'); 

Proszę ktoś mający takie doświadczenie?

+3

Nie można usunąć za pomocą adresu URL. Czy wypróbowałeś pełną ścieżkę do systemu plików, taką jak '/ var/www/mysite.com/img1.jpg'? – Maerlyn

+0

Czy wystąpił błąd? Może nie masz uprawnień do usunięcia tego pliku lub plik znajduje się gdzieś indziej na serwerze. 'unlink' z adresem http: // ... nie działa, musisz użyć ścieżki serwera. – Jojo

+0

Użyłem go jako: unlink ('img1.jpg'); ale nie działa – Sunil

Odpowiedz

6

url nie pozwalają w funkcji ulink

czy możesz stosować ten

Lepiej, także bezpieczeństwo mądry użyć ścieżki bezwzględnej. Ale możesz uzyskać tę ścieżkę dynamicznie.

E.g. przy użyciu:

getcwd(); 

W zależności od tego, gdzie skrypt PHP jest zmienna mogłaby wyglądać następująco:

$deleteImage = getcwd() . 'img1.jpg'; 

unlink($deleteImage); 

check to

bool unlink (string $filename [, resource $context ]) 

i

nazwa pliku
Ścieżka do pliku.

Tak więc tylko przyjmuje ciąg jako nazwę pliku.

Upewnij się, że plik jest osiągalny ze ścieżką od miejsca, w którym wykonujesz skrypt. To nie jest problem z bezwzględnymi ścieżkami, ale możesz mieć jeden ze względnymi ścieżkami.

+1

Tak, pracuję z getcwd(), ale nie wiem dlaczego nie z absolutną ścieżką. Anyways Dzięki Patel. Reg, Sunil – Sunil

0

unlink nie będzie działać z unlink('http://www.mysite.com/img1.jpg');

użytku zamiast unlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg'); // wykonuje bieżący katalog lub

unlink($_SERVER['DOCUMENT_ROOT'].'dir_name/img1.jpg'); 

Nie może być pozwolenie plik issue.please to sprawdzić.

0

Podaj względną ścieżkę z folderu, w którym przechowywane są obrazy, do pliku, w którym piszesz skrypt. Jeśli struktura plików jest jak:

-your php file 
-images 
    -1.jpg 

then 

unlink(images/1.jpg); 

Albo może być jakiś problem uprawnienie Folder. Twoje pliki znajdują się na serwerze lub używasz go na localhost? Jeśli znajduje się na serwerze, wówczas daje 755 uprawnień do folderu obrazów.

1

ścieżka wykorzystanie plików,
najpierw zdefiniować ścieżkę tak:

define("WEB_ROOT",substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-3)); 

i sprawdzić plik istnieje lub nie jest, jeśli istnieje wówczas odłączyć plik.

$filename=WEB_ROOT."img1.jpg"; 
if(file_exists($filename)) 
{ 
$img=unlink(WEB_ROOT."img1.jpg"); 
} 
2

Jeśli używasz rozłączyć w systemie Linux lub UNIX należy również sprawdzić wyniki is_writable (string $filename) A jeśli funkcja zwraca false, należy sprawdzić uprawnienia do plików z fileperms (string $filename).

Uprawnienia do plików to zwykłe problemy występujące na stronach internetowych, np. jeśli przesyłasz plik na ftp z użytkownikiem ftp, a serwer internetowy działa jako inny użytkownik.

Jeśli jest to problem, trzeba zrobić, aby

chmod o + RWD img1.jpg

lub

chmod 777 img1.jpg

do wielkich uprawnień do zapisu (i usuwania) dla innych użytkowników.