首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 刪除檔案與目錄三種方法:unlink 遞迴、系統指令、權限修正後刪除

     編輯:PHP 相關知識

方法一:遞迴掃描目錄並 unlink 檔案

if($od = opendir($d)) { // $d 為目錄路徑
    while(($file = readdir($od)) !== false) {
        if($file != '.' && $file != '..') {
            $full = $d . '/' . $file;
            if(is_dir($full)) {
                // 若需刪除子目錄需遞迴呼叫
            } else {
                unlink($full);
            }
        }
    }
    closedir($od);
}

方法二:呼叫系統指令(跨平台)

function del_dir($dir) {
    if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        $str = "rmdir /s/q " . escapeshellarg($dir);
    } else {
        $str = "rm -rf " . escapeshellarg($dir);
    }
    exec($str, $output, $return_var);
    return $return_var === 0;
}

方法三:單一檔案/目錄刪除並處理權限問題

$target = "a123"; // 檔案或目錄路徑
if(is_dir($target)) {
    if(rmdir($target)) echo "目錄 {$target} 刪除完畢";
    else echo "目錄無法刪除,可能非空";
}
if(is_file($target)) {
    if(unlink($target)) echo "檔案 {$target} 刪除完畢";
    else {
        echo "刪除失敗,嘗試修改權限...";
        if(chmod($target, 0777)) {
            if(unlink($target)) echo "權限修改後刪除成功";
            else echo "無法透過 Web 刪除,可能受 FTP 權限限制";
        }
    }
}

安全提醒:使用 exec 需極度小心注入風險,務必用 escapeshellarg;生產環境建議改用 PHP 內建遞迴刪除函式庫(如 RecursiveDirectoryIterator)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved