2011-01-12 97 views
0

我跑chown -R www-data:www-data /srv/www/dev.example.com/public_html/uploads/沒有工作 試過chmod 777沒有工作。文件不會刪除

define('UPLOADPATH', "/srv/www/dev.example.com/public_html/uploads/members/"); 
$userId = 6; 
$dir = UPLOADPATH . $userId; 
rmdir($dir); 

不刪除用戶文件夾(這會在刪除帳戶時刪除所有文件)。 也(只刪除照片)

$RemovePreview = UPLOADPATH . $userId. '/' . $file . '_preview.' . $image_ending; 
         if (file_exists($RemovePreview)) 
         { 
          @unlink($RemovePreview); 
         } 

文件和image_ending從我的數據庫來。也不會刪除該文件。

我真的不知道怎麼回事。不知道這是一個PHP,服務器還是兩個問題?

+1

「沒有工作」是從PHP返回的奇怪錯誤消息。這是真的嗎? – Gareth

+0

沒有錯誤。也許它在error.log文件中。我要去看看。 – Keverw

回答

1

你的目錄是空的嗎? Documentation to rmdir表示該目錄需要爲空;你可能會尋找是命令rmdir的遞歸版本:當您嘗試上的文件,或者你不擁有目錄CHOWN或搭配chmod

function rrmdir($dir) 
{ 
    if (is_dir($dir)) { 
     $objects = scandir($dir); 
     foreach ($objects as $object) { 
      if ($object != "." && $object != "..") { 
       if (filetype($dir."/".$object) == "dir") 
        rrmdir($dir."/".$object); 
       else 
        unlink($dir."/".$object); 
      } 
     } 
     reset($objects); 
     rmdir($dir); 
    } 
} 
+0

Sucks'rmdir()'從來沒有像'mkdir()'那樣獲得遞歸參數。 – alex

+0

謝謝!我發現爲什麼unlink不起作用。那是它的工作。我忘記了在我的託管計劃中添加了CDN。因此,圖像在服務器上被刪除,但當您查看它時,它就像它在那裏一樣。我清除了我的CDN上的緩存,並且圖像沒有顯示出來!我的舊服務器沒有這樣做,所以我不習慣它。所以我會在那個函數中做些什麼來刪除整個文件夾。那麼這兩個問題都解決了! – Keverw

+0

很高興爲你效勞。 – 2011-01-12 02:46:19

0

使用sudo。

+0

我總是使用根,但謝謝。 – Keverw