You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP实现的FTP递归删除目录的ftpDeleteDirectory函数?

PHP FTP递归删除函数调用方法

前置依赖说明

你提供的函数依赖全局变量$conn_id作为已生效的FTP连接标识符,调用前必须先完成FTP服务器的连接、登录操作。

完整调用流程

1. 建立FTP连接

// 配置FTP信息
$ftp_server = '你的FTP服务器地址';
$ftp_username = 'FTP登录账号';
$ftp_password = 'FTP登录密码';

// 创建FTP连接
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die('FTP服务器连接失败');
}

// 登录FTP
$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);
if (!$login_result) {
    ftp_close($conn_id);
    die('FTP账号登录失败');
}

// 开启被动模式(绝大多数云服务器、虚拟主机的FTP需要开启,否则无法正常读取目录列表)
ftp_pasv($conn_id, true);

2. 调用删除函数

// 填入你要删除的目标目录路径,支持FTP根目录相对路径或绝对路径,例如要删除FTP根目录下的test文件夹就填'test'
$target_delete_dir = '要删除的目录路径';

// 调用函数并解析返回结果
$delete_result = json_decode(ftpDeleteDirectory($target_delete_dir), true);

if ($delete_result) {
    echo '目录删除成功';
} else {
    echo '目录删除失败,请检查路径是否存在、账号是否有删除权限';
}

// 操作完成后关闭FTP连接
ftp_close($conn_id);

注意事项

  • 不要传入空路径,函数内置了空值校验,避免误删FTP根目录下所有内容
  • 如果FTP服务器为Windows系统,需要把路径分隔符从/替换为\
  • 原函数未过滤目录列表中的.和..特殊目录,部分FTP服务器返回列表时会携带这两个值,可能导致递归死循环,建议修改函数内的遍历逻辑:
    foreach($filelist as $file)
    {
        // 新增过滤逻辑
        if($file == '.' || $file == '..') continue;
        ftpDeleteDirectory($directory.'/'.$file);
    }
    
  • 排查错误时可以暂时去掉函数内的@错误抑制符,查看具体的FTP操作报错信息
  • 该函数同时支持单个文件的删除,传入文件路径即可直接调用

内容的提问来源于stack exchange,提问作者emn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:06:10