当前位置:首页 > 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 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php 路由实现的

php 路由实现的

PHP 路由实现方法 基于原生 PHP 实现路由 创建一个简单的路由解析器,通过解析 URL 路径来调用对应的控制器或函数。 // 定义路由表 $routes = [ '/' => '…

php多态实现

php多态实现

PHP 多态的实现方法 多态是面向对象编程的三大特性之一,允许不同类的对象对同一消息做出响应。PHP 主要通过以下方式实现多态: 通过继承和方法重写 子类继承父类并重写父类方法,实现不同子类对同一方…

vue实现图片裁剪上传

vue实现图片裁剪上传

Vue 实现图片裁剪上传的方法 使用 vue-cropper 库 安装 vue-cropper 库: npm install vue-cropperjs 引入组件并设置基本配置: import V…