2016-12-14 65 views
-2
中的一些文件

我有一個腳本需要刪除某些以某種模式開始的文件。刪除php

我試過unlink,但不知何故沒有工作,有什麼是缺少的。

$files = glob(PATH_DIR. 
    '_*.txt'); 
foreach($files as $file) { // iterate files 
    if (is_file($file)) { 
     //unlink($file); // delete file 
     $mask = $var. 
     '_*.*'; 
     array_map('unlink', glob($mask)); 
    } 
} 
+0

你爲什麼這樣做'array_map()'一個循環內?你在尋找哪種模式,'_ *。txt'或'_ *。*'?什麼是'$ var'?你沒有在顯示的代碼中定義它,但是嘗試在'$ mask'中使用它,這是你調用'unlink()'的基礎。 –

回答

0
@array_map('unlink', glob(PATH_DIR.'_*.txt')); 

_-如果不打印所有路徑,然後嘗試manualy觸發取消鏈接

+0

'$ mask'怎麼樣,我需要刪除以某種模式開始的文件。 – Mann

+0

這就是爲什麼你刪除了所有/_222.txt文件,嘗試使用die來代替glob,然後你會看到什麼是不正確的,否則許可問題 – 2016-12-14 05:29:28

+0

請不要使用'@'來壓制錯誤。這是非常糟糕的做法。 –

0

使用RecursiveIteratorIterator用於將文件複製,並檢查你有足夠的權限刪除這些文件。無論chown該文件夾或更改權限755和文件644

find . -type d -exec chmod 0755 {} $path; 
find . -type f -exec chmod 0644 {} $path; 

這些命令將有助於遞歸設置權限,如果你是在Linux上

$file_obj = get_files_by_path('/var/www/html/wordpress') 

foreach ($file_obj as $Ofiles) { 
    $file_path = $Ofiles->getPathname(); 
    //use your regex here with $file path. if that passed then delete the file 

    unlink($file_path); 
} 

function get_files_obj_by_path($path){ 
      $obj = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD 
       ); 
      return $obj; 
     }