当前位置:首页 > PHP

php实现sftp上传

2026-02-16 14:54:38PHP

使用 PHP 的 SSH2 扩展实现 SFTP 上传

确保服务器已安装 ssh2 PHP 扩展,可通过 php -m | grep ssh2 检查。若未安装,需通过 pecl install ssh2 或系统包管理器安装。

连接 SFTP 服务器并上传文件:

$host = 'sftp.example.com';
$port = 22;
$username = 'your_username';
$password = 'your_password';
$localFile = '/path/to/local/file.txt';
$remoteFile = '/path/to/remote/file.txt';

$connection = ssh2_connect($host, $port);
if (!ssh2_auth_password($connection, $username, $password)) {
    throw new Exception('Authentication failed');
}

$sftp = ssh2_sftp($connection);
$stream = fopen("ssh2.sftp://{$sftp}{$remoteFile}", 'w');
if (!$stream) {
    throw new Exception('Could not open remote file');
}

$fileContent = file_get_contents($localFile);
if (fwrite($stream, $fileContent) === false) {
    throw new Exception('Could not write to remote file');
}

fclose($stream);
ssh2_disconnect($connection);

使用 PHP 的 SFTP 库(phpseclib)

通过 Composer 安装 phpseclib:

composer require phpseclib/phpseclib

代码实现:

use phpseclib3\Net\SFTP;

$sftp = new SFTP('sftp.example.com');
if (!$sftp->login('username', 'password')) {
    throw new Exception('Login failed');
}

$localFile = '/path/to/local/file.txt';
$remoteFile = '/path/to/remote/file.txt';

if (!$sftp->put($remoteFile, $localFile, SFTP::SOURCE_LOCAL_FILE)) {
    throw new Exception('Upload failed');
}

错误处理与调试

增加详细的错误处理机制:

try {
    $sftp = new SFTP('sftp.example.com');
    $sftp->login('username', 'password');

    if ($sftp->put('remote.txt', 'local.txt')) {
        echo "Upload successful";
    } else {
        echo "Upload failed: " . $sftp->getLastError();
    }
} catch (Exception $e) {
    echo "SFTP error: " . $e->getMessage();
}

文件权限设置

上传后修改远程文件权限:

$sftp->chmod(0644, $remoteFile);

大文件分块上传

对于大文件使用分块上传:

php实现sftp上传

$handle = fopen($localFile, 'rb');
$sftp->put($remoteFile, $handle, SFTP::SOURCE_LOCAL_FILE | SFTP::RESUME);
fclose($handle);

标签: 上传php
分享给朋友:

相关文章

php实现上传

php实现上传

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

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…

vue实现上传头像

vue实现上传头像

使用 Vue 实现上传头像 前端实现 创建一个文件上传组件,使用 <input type="file"> 元素选择文件,并通过 FileReader 预览图片。 <template…

php实现进度条

php实现进度条

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

php无法实现

php无法实现

PHP 是一种功能强大的服务器端脚本语言,能够实现多种功能,包括动态网页开发、数据库交互、文件操作等。如果遇到“无法实现”的问题,通常是由于以下原因之一: 环境配置问题 确保 PHP 环境正确安装和…