2012-11-27 236 views
19

我有兩個文件: b.php和test.txt的權限被拒絕 - PHP UNLINK

<?php 
$b = "test.txt"; 
unlink($b); 
?> 

和錯誤是:警告:取消鏈接(test.txt的)[function.unlink]:權限被拒絕

爲什麼? b.php和test.txt是777和相同的組/登錄

如果我在父目錄上設置777我可以執行取消鏈接,但我必須設置777和回到755?

+1

它們是否在t他同一個目錄? –

+1

可能是因爲您需要對運行php代碼的進程所在的目錄有寫權限。 –

+0

是,同一目錄 – eugui

回答

19

您(如在運行b.php的過程中,無論您是通過CLI還是網絡服務器)都需要對文件所在的目錄有寫權限。您正在更新目錄內容,因此訪問該文件是不夠的。

請注意,如果您使用PHP chmod()功能設置一個文件或文件夾777的模式,你應該使用0777,以確保數量正確地解釋爲一個八進制數。

3
// Path relative to where the php file is or absolute server path 
chdir($FilePath); // Comment this out if you are on the same folder 
chown($FileName,465); //Insert an Invalid UserId to set to Nobody Owner; for instance 465 
$do = unlink($FileName); 

if($do=="1"){ 
    echo "The file was deleted successfully."; 
} else { echo "There was an error trying to delete the file."; } 

試試這個。希望能幫助到你。

+1

chown()[函數。chown]:不允許操作 – eugui

+0

這可能是因爲您無權更改文件的所有權。你可以嘗試更改文件的權限以查看它是否更改? (例如chmod(「test.txt」,0666)。你可以試着在666上解開鏈接,看看會發生什麼。是否有看到擁有該文件的用戶? – Ardi

17

您首先需要使用fclose($handle);來關閉文件,因爲該文件正在使用中,所以不會刪除它。所以先關閉文件,然後嘗試。

+0

這解決了我的問題, – heavyrick

0

該文件的權限是好的(0777),但我認爲你的共享服務器上,所以刪除你的文件正確使用; 1.創建一個正確的路徑文件

// delete from folder 
$filename = 'test.txt'; 
$ifile = '/newy/made/link/uploads/'. $filename; // this is the actual path to the file you want to delete. 
unlink($_SERVER['DOCUMENT_ROOT'] .$ifile); // use server document root 
// your file will be removed from the folder 

這小碼會做的魔力,並刪除您想從任何文件夾中提供的實際文件路徑中的任何選擇的文件是集。

0

除了所有其他朋友有,如果有人誰是尋找這個職位正在尋找一種方式來刪除答案「文件夾」,而不是「文件」,應注意的是文件夾必須由php rmdir() function刪除如果ü要刪除「文件夾」,由unlink(),U將與說,一個錯誤的警告消息遭遇拒絕「權限」

但是美國可以通過mkdir()使文件夾&文件,但你刪除文件夾的方式(rmdir())是與您刪除文件的方式不同(unlink()