2013-02-21 149 views
4

我對使用PHP unlink()在ubuntu中刪除文件感到沮喪。取消鏈接無法刪除文件

我創建了一個非常簡單的模擬如下:

  1. 創建一個文件夾命名爲 「文件」 下的/ var/WWW與766的權限。
  2. 上傳文件,讓說:「image.png」文件夾&在設置權限爲666
  3. 創建一個名爲delete.php一個php文件,權限設置爲644,並上傳到/ var/www目錄
  4. 調用瀏覽器中的文件(我使用localhost)

的 「image.png」 仍然存在於 「文件」 目錄

這裏是delete.php的PHP腳本:

$filename = 'image.png'; 
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename; 
unlink($file); 

我也嘗試下面的腳本:

$filename = 'image.png'; 
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files'; 
chdir($dir); 
unlink($filename); 

但仍然無法刪除該文件。

+5

創建image.png的用戶與www-data(或誰曾經運行apache?)的用戶相同 – 2013-02-21 07:49:28

回答

2

該目錄的文件夾/所有者可能是與用於運行php的用戶不同的用戶。

您應該創建一個用戶php分配的文件夾。如果你自己做不到這一點,請讓你的ISP去做。這就是我解決類似問題的方法。

一個用戶無法刪除unix系統上的其他用戶的文件。 如果您將其設置爲777,則可以將其刪除...

+1

如果您可以通過SSH連接到機器,那麼也許您可以運行'll'命令來查看要從中刪除的文件以及要刪除的文件。通常,您的php腳本由ftp用戶擁有,並由root用戶上傳文件。這將有助於將它們都放在一個用戶組中。 – Khuram 2013-02-21 07:54:52

+0

當我將所有權更改爲萬維網數據時,可以刪除該文件。感謝所有的幫助。 – user1134475 2013-02-22 01:33:53

5

Unlink在失敗時會引發警告。檢查E_WARNING是否可見,以便了解發生了什麼。

它通常歸結爲用戶權利。請記住,如果您的腳本是由瀏覽器執行的,通常名爲wwwrunwwwdata(或類似的)的用戶正在您的服務器上執行它。

檢查此用戶是否有權刪除,然後重試。

相關問題