当前位置:首页 > 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实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现重定向

php实现重定向

使用header函数进行重定向 在PHP中,header()函数是实现重定向的常用方法。通过发送HTTP头信息Location,浏览器会自动跳转到指定URL。需确保在调用header()前没有输出任何…

php实现进度条

php实现进度条

PHP 实现进度条的方法 使用 HTML 和 CSS 结合 PHP 实现进度条 在 PHP 中,进度条通常通过 HTML 和 CSS 实现,PHP 负责计算进度并更新前端显示。 <div st…

php 实现排名

php 实现排名

PHP 实现排名的方法 在 PHP 中实现排名功能通常涉及对数据进行排序、计算排名以及输出结果。以下是几种常见的实现方式: 基本数组排序排名 $scores = [85, 92, 78, 95, 8…