千家信息网

php如何实现sftp上传

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要讲解了"php如何实现sftp上传",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"php如何实现sftp上传"吧!本文操作环境:window
千家信息网最后更新 2025年01月20日php如何实现sftp上传

这篇文章主要讲解了"php如何实现sftp上传",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"php如何实现sftp上传"吧!

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php怎么实现sftp上传?

php 实现SFTP上传文件

php 实现sftp文件上传完全可以用php.net 官网中的方式,代码如下:

class SFTPConnection{    private $connection;    private $sftp;    public function __construct($host, $port=22)    {        $this->connection = @ssh3_connect($host, $port);        if (! $this->connection)            throw new Exception("Could not connect to $host on port $port.");    }    public function login($username, $password)    {        if (! @ssh3_auth_password($this->connection, $username, $password))            throw new Exception("Could not authenticate with username $username " .                                "and password $password.");        $this->sftp = @ssh3_sftp($this->connection);        if (! $this->sftp)            throw new Exception("Could not initialize SFTP subsystem.");    }    public function uploadFile($local_file, $remote_file)    {        $sftp = $this->sftp;        $stream = @fopen("ssh3.sftp://$sftp$remote_file", 'w');        if (! $stream)            throw new Exception("Could not open file: $remote_file");        $data_to_send = @file_get_contents($local_file);        if ($data_to_send === false)            throw new Exception("Could not open local file: $local_file.");        if (@fwrite($stream, $data_to_send) === false)            throw new Exception("Could not send data from file: $local_file.");        @fclose($stream);    }}try{    $sftp = new SFTPConnection("localhost", 22);    $sftp->login("username", "password");    $sftp->uploadFile("/tmp/to_be_sent", "/tmp/to_be_received");}catch (Exception $e){    echo $e->getMessage() . "\n";}

但是在进行中遇到了一个问题, 我的php版本是 PHP 5.6.31 (cli) (built: Aug 2 2017 15:05:23) , 在执行

$stream = @fopen("ssh3.sftp://$sftp$remote_file", 'w');

fopen的时候 执行文件 会报 "Segmentation fault" 的错误, 然后变成以下方式便可以解决

$stream = @fopen("ssh3.sftp://" . intval($sftp) . $remote_file, 'w');

其中,在实现sftp上传的时候,没有在意上传文件和上传目录的区别(例如: /upload 和 /upload/test.txt 的问题), 导致每次执行php 都会报 fopen(): Unable to open ssh3.sftp://5/upload on remote host. 问题解决方法就是 认真, 大写的认真

以上就是php做的, 只要登录sftp服务器 进行查看便知道结果.

sftp 命令登录方式:

sftp -oPort=port user@server 然后输入密码, 进去之后可以到相对的目录查看文件是否存在.

感谢各位的阅读,以上就是"php如何实现sftp上传"的内容了,经过本文的学习后,相信大家对php如何实现sftp上传这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 问题 就是 方式 学习 内容 时候 目录 会报 登录 代码 命令 大写 密码 思路 情况 文章 方法 是在 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络科技服务器设计 宅博士网络安全盾 国内网络安全厂商排名2020 数据库设计工具金仓 网络安全 自查工作总结 表格插入到数据库 c 计算机软件开发与应用课程表 网络安全风险有那些 网络技术对客户服务的影响 hbase怎么读取数据库 电信宽带DNS服务器发生错误 为什么我导入不了本地数据库 软件开发项目的阶段性报告 加强网络安全技术培训 虚拟机共享ip和服务器独立ip 网络安全四个禁止 物联无线传感器网络技术与应用 网络安全防护水平不断强化 市场调研数据库 计算机软件开发教学视频 宽城区通用网络技术推荐咨询 数据库怎么添加多条数据 涉及政府部门的网络安全法 网络安全相关的证书有哪些 新时代网络安全宣传活动 云服务器的实例名称是什么 人工智能中的网络技术 制定镇政府网络安全工作方案 旧路由器如何设置服务器 触摸屏能做数据库数据调用吗
0