当前位置:首页 > 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实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…