2012-07-13 23 views
7

Próbuję użyć funkcji PHP unlink(), aby usunąć określony dokument w folderze. Ten konkretny folder został już przypisany do pełnych praw do użytkownika IIS.Jak korzystać z funkcji Unlink()

Kod:

$Path = './doc/stuffs/sample.docx'; 
if (unlink($Path)) {  
    echo "success"; 
} else { 
    echo "fail";  
} 

ona zachować zwrot niepowodzeniem. Plik sample.docx znajduje się na tej konkretnej ścieżce. Uprzejmie poradzę.

+0

Czy można sprawdzić, czy masz uprawnienia do usuwania plików? Addiotinally, spróbuj użyć bezwzględnej ścieżki, takiej jak ta: '$ Path = '/ doc/stuffs/sample.docx'' –

+0

yes. Mogę pobrać ten konkretny plik, aby moja ścieżka działała. – JLearner

+0

Jeśli masz pewność, że uprawnienia są poprawne, zgaduję, że ścieżka jest zła, jak sugeruje Marcio. Czy próbowałeś sprawdzić to za pomocą 'file_exists()'? – SilverSnake

Odpowiedz

9

znalazłem tę informację in the comments of the function unlink()

W Windows System i Apache, odmowa dostępu do pliku jest zwykle błąd odłączyć plik. Aby usunąć plik, musisz zmienić właściciela pliku. Przykład:

chown($tempDirectory . '/' . $fileName, 666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody" 
unlink($tempDirectory . '/' . $fileName); 

Więc spróbuj coś takiego:

$path = './doc/stuffs/sample.docx'; 

chown($path, 666); 

if (unlink($path)) { 
    echo 'success'; 
} else { 
    echo 'fail'; 
} 

EDIT 1

spróbuje użyć tego w ścieżce:

$path = '.' 
     . DIRECTORY_SEPARATOR . 'doc' 
     . DIRECTORY_SEPARATOR . 'stuffs' 
     . DIRECTORY_SEPARATOR . 'sample.docx'; 
+0

to nie działa. wpada w inne zdanie, które się nie powiedzie :( – JLearner

+0

@JLearner, spróbuj zrobić nową edycję, którą zrobiłem –

+0

Zrobiłem kilka niedbałych błędów na mojej ścieżce pliku, umieszczając 1 '.' lees =. = – JLearner

6

Spróbuj tego:

$Path = './doc/stuffs/sample.docx'; 
if (file_exists($Path)){ 
    if (unlink($Path)) { 
     echo "success"; 
    } else { 
     echo "fail";  
    } 
} else { 
    echo "file does not exist"; 
} 

Jeśli masz plik nie istnieje, masz złą drogę. Jeśli nie, może to być problem z uprawnieniami.

+0

Hi travis.Daje mi plik nie istnieje Ale ścieżka jest również używana do pobierania dokumentu i działa .... – JLearner

+0

./ oznacza, że ​​ścieżka jest względna do ścieżki, z której uruchamiany jest skrypt.) Czy ten skrypt jest uruchamiany z tego samego katalogu? Skrypt do pobrania jest uruchamiany z? – Travis

+0

Wspomniał Pan, że ścieżka jest pobierana z innej strony z ./ przed nią. kod lub głębokie odwołanie do miejsca, z którego pochodzi ścieżka pliku? – Travis

0

Potrzebna jest pełna ścieżka pliku do interesującego nas pliku. Na przykład: C: \ doc \ stuff \ sample.docx. Spróbuj użyć __DIR__ lub __FILE__, aby uzyskać względną pozycję pliku, dzięki czemu możesz przejść do interesującego Cię pliku.

+0

Nie mogę tego zrobić, ponieważ ta konkretna ścieżka została przeanalizowana na innej stronie z napisem "./" z przodu. – JLearner

+0

Czy próbujesz usunąć plik z systemu plików innej witryny? –

+0

To na moim serwerze WWW – JLearner

2

ten powinien w ork, gdy skończysz z problemem uprawnień. Także spróbować

ini_set('display_errors', 'On'); 

To powie Ci, co niewłaściwy

+0

mówi, że nie ma takich ścieżka lub katalog .. ale istnieje .. – JLearner

+1

spróbuj odłączyć ($ _ SERVER ['DOCUMENT_ROOT']. "/ doc/stuffs/sample.docx"); – leet

0
define("BASE_URL", DIRECTORY_SEPARATOR . "book" . DIRECTORY_SEPARATOR); 
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL); 

$path = "doc/stuffs/sample.docx"; 

if (unlink(ROOT_PATH . $Path)) { 
    echo "success"; 
} else { 
    echo "fail";  
} 

// http://localhost/book/doc/stuffs/sample.docx 
// C:/xampp/htdocs\book\doc/stuffs/sample.docx 
Powiązane problemy