php 实现ftp
使用 PHP 内置 FTP 函数实现 FTP 操作
PHP 提供了一系列内置函数用于 FTP 操作,需确保服务器已启用 FTP 扩展(php_ftp.dll 或 php_ftp.so)。
连接 FTP 服务器并登录:
$ftp_server = "ftp.example.com";
$ftp_user = "username";
$ftp_pass = "password";
$conn = ftp_connect($ftp_server) or die("无法连接服务器");
ftp_login($conn, $ftp_user, $ftp_pass);
上传文件到 FTP 服务器:
$local_file = "local.txt";
$remote_file = "remote.txt";
ftp_put($conn, $remote_file, $local_file, FTP_BINARY);
从 FTP 服务器下载文件:
ftp_get($conn, $local_file, $remote_file, FTP_BINARY);
列出 FTP 目录内容:
$files = ftp_nlist($conn, ".");
print_r($files);
关闭 FTP 连接:
ftp_close($conn);
使用 cURL 实现 FTP 操作
cURL 是更灵活的替代方案,支持 FTP 和 FTPS。
上传文件:
$ch = curl_init();
$local_file = fopen('local.txt', 'r');
curl_setopt($ch, CURLOPT_URL, "ftp://ftp.example.com/remote.txt");
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $local_file);
curl_exec($ch);
curl_close($ch);
下载文件:
$fp = fopen('local.txt', 'w');
$ch = curl_init("ftp://ftp.example.com/remote.txt");
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
curl_close($ch);
处理 FTP 被动模式与主动模式
被动模式通常更兼容防火墙:
ftp_pasv($conn, true); // 启用被动模式
主动模式可能需要额外配置:
ftp_pasv($conn, false); // 使用主动模式
错误处理与调试
检查 FTP 函数是否可用:
if (function_exists('ftp_connect')) {
echo "FTP 扩展已启用";
}
获取最后错误信息:
$error = error_get_last();
if (ftp_login($conn, $user, $pass) === false) {
echo "登录失败: " . ftp_last_error($conn);
}
安全注意事项
使用 FTPS(FTP over SSL)更安全:
$conn = ftp_ssl_connect($ftp_server);
避免在代码中硬编码凭据,建议使用环境变量或配置文件存储敏感信息。







