2012-07-13 97 views
7

我試圖使用PHP unlink()函數刪除文件夾中的特定文檔。該特定文件夾已被分配給IIS用戶的完整權限。如何使用Unlink()函數

代碼:

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

保持它的回報失敗。 sample.docx確實駐留在該特定路徑上。好心提醒。

+0

你檢查,如果你有權限刪除的文件?另外,嘗試使用絕對路徑,如下所示:'$ Path ='/ doc/stuffs/sample.docx'' – 2012-07-13 03:05:17

+0

yes。我可以下載那個特定的文件,這樣我的路徑就可以工作了。 – JLearner 2012-07-13 03:07:28

+0

如果你確定權限是正確的,我猜測路徑是錯誤的,就像馬西奧所說的那樣。你有沒有試過用'file_exists()'檢查它? – SilverSnake 2012-07-13 03:08:03

回答

9

我發現這個信息in the comments of the function unlink()

在Windows系統和Apache,拒絕訪問文件是平常 錯誤斷開鏈接文件。要刪除文件,您必須更改文件的所有者。 一個例子:

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

因此,嘗試這樣的事:

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

chown($path, 666); 

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

編輯1

嘗試的路徑,使用此:

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

它不起作用。它落入else語句失敗:( – JLearner 2012-07-13 03:56:18

+0

@JLearner,試着做我已經完成的新編輯 – 2012-07-13 04:04:16

+0

我在文件路徑上做了一些粗心的錯誤,把1'。'lees =。= – JLearner 2012-07-13 05:09:27

6

試試這個:

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

如果你得到的文件不存在,你走錯了路。如果不是,它可能是一個權限問題。

+0

嗨特拉維斯。它給我的文件不存在。但路徑也用於下載文件,它的工作原理.... – JLearner 2012-07-13 03:10:57

+0

./表示路徑是相對的這個腳本是從同一個目錄下運行的腳本運行的? – Travis 2012-07-13 03:23:17

+0

你提到的路徑是從另一個頁面上獲得的,它的前面有一個./,你能提供更多的代碼還是深入參考文件路徑的來源? – Travis 2012-07-13 03:24:46

0

您需要感興趣的文件的完整文件路徑。例如:C:\ doc \ stuff \ sample.docx。嘗試使用__DIR____FILE__獲取您的相對文件位置,以便您可以導航到感興趣的文件。

+0

我無法做到這一點,因爲該特定路徑是從另一個網頁解析,前面有'./'。 – JLearner 2012-07-13 03:13:42

+0

您是否試圖刪除其他網站的文件系統上的文件? – 2012-07-13 03:19:08

+0

它在我的同一個網絡服務器 – JLearner 2012-07-13 04:01:49

2

這應該w ork一旦你完成了權限問題。也可以嘗試

ini_set('display_errors', 'On'); 

,會告訴你什麼是錯

+0

它說沒有這樣路徑或目錄..但它確實存在.. – JLearner 2012-07-13 05:04:08

+1

嘗試取消鏈接($ _ SERVER ['DOCUMENT_ROOT']。「/ doc/stuffs/sample.docx」); – leet 2012-07-13 05:12:34

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