当前位置:首页 > 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);

大文件分块上传

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

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

php实现sftp上传

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

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

jquery上传

jquery上传

jQuery 文件上传的实现方法 jQuery 可以通过多种方式实现文件上传功能,以下介绍几种常见的方法: 使用原生表单和 AJAX 通过 HTML 表单结合 jQuery 的 AJAX 功能实现文…

php 实现秒杀

php 实现秒杀

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