当前位置:首页 > PHP

php 实现ftp

2026-02-15 02:26:45PHP

使用 PHP 内置 FTP 函数实现 FTP 操作

PHP 提供了一系列内置函数用于 FTP 操作,需确保服务器已启用 FTP 扩展(php_ftp.dll 或 php_ftp.so)。

连接 FTP 服务器并登录:

$ftpServer = "ftp.example.com";
$ftpUser = "username";
$ftpPass = "password";

$conn = ftp_connect($ftpServer) or die("无法连接服务器");
ftp_login($conn, $ftpUser, $ftpPass);

上传文件到 FTP 服务器:

$localFile = "local.txt";
$remoteFile = "remote.txt";

if (ftp_put($conn, $remoteFile, $localFile, FTP_BINARY)) {
    echo "文件上传成功";
} else {
    echo "文件上传失败";
}

从 FTP 服务器下载文件:

if (ftp_get($conn, $localFile, $remoteFile, FTP_BINARY)) {
    echo "文件下载成功";
} else {
    echo "文件下载失败";
}

列出 FTP 目录内容:

php 实现ftp

$files = ftp_nlist($conn, ".");
print_r($files);

关闭 FTP 连接:

ftp_close($conn);

使用第三方库(如 phpseclib)实现更安全的 SFTP

对于需要加密传输的场景,推荐使用 phpseclib 库实现 SFTP 功能。

安装 phpseclib:

php 实现ftp

composer require phpseclib/phpseclib

SFTP 连接与文件操作示例:

use phpseclib3\Net\SFTP;

$sftp = new SFTP('sftp.example.com');
if (!$sftp->login('username', 'password')) {
    exit('登录失败');
}

// 上传文件
$sftp->put('remote.txt', 'local.txt');

// 下载文件
$data = $sftp->get('remote.txt', 'local_download.txt');

// 列出目录
$files = $sftp->nlist();
print_r($files);

错误处理与调试

建议在所有 FTP 操作中添加错误处理逻辑:

ftp_pasv($conn, true); // 启用被动模式
if (!ftp_set_option($conn, FTP_TIMEOUT_SEC, 30)) {
    echo "设置超时失败";
}

// 检查文件是否存在
if (ftp_size($conn, $remoteFile) != -1) {
    echo "文件存在";
}

注意事项

确保服务器防火墙允许 FTP 连接(默认端口 21),SFTP 使用 22 端口。被动模式可能需要额外配置服务器防火墙开放端口范围。

对于大文件传输,建议使用二进制模式(FTP_BINARY)并显示传输进度:

function ftpProgress($callback) {
    return function($ch, $downloadSize, $downloaded, $uploadSize, $uploaded) use ($callback) {
        $callback($uploaded, $uploadSize);
    };
}

ftp_set_option($conn, FTP_PROGRESS_CALLBACK, ftpProgress(function($uploaded, $uploadSize) {
    if ($uploadSize > 0) {
        echo round(($uploaded / $uploadSize) * 100) . "%\n";
    }
}));

标签: phpftp
分享给朋友:

相关文章

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 &l…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $n…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT A…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…