php怎么实现sftp上传
时间:2021-09-22
来源:互联网
今天PHP爱好者给大家带来php实现sftp上传的方法:1、创建代码“class SFTPConnection private $connection...try{...}catch{...}”;2、执行“sftp -oPort=port user@server”。
本文操作环境: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 = @ssh2_connect($host, $port);
if (! $this->connection)
throw new Exception("Could not connect to $host on port $port.");
}
public function login($username, $password)
{
if (! @ssh2_auth_password($this->connection, $username, $password))
throw new Exception("Could not authenticate with username $username " .
"and password $password.");
$this->sftp = @ssh2_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("ssh2.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("ssh2.sftp://$sftp$remote_file", 'w');
fopen的时候 执行文件 会报 "Segmentation fault" 的错误, 然后变成以下方式便可以解决
$stream = @fopen("ssh2.sftp://" . intval($sftp) . $remote_file, 'w');
其中,在实现sftp上传的时候,没有在意上传文件和上传目录的区别(例如: /upload 和 /upload/test.txt 的问题), 导致每次执行php 都会报 fopen(): Unable to open ssh2.sftp://5/upload on remote host. 问题解决方法就是 认真, 大写的认真
以上就是php做的, 只要登录sftp服务器 进行查看便知道结果.
sftp 命令登录方式:
sftp -oPort=port user@server 然后输入密码, 进去之后可以到相对的目录查看文件是否存在.
以上就是php怎么实现sftp上传的详细内容,更多请关注php爱好者其它相关文章!
-
云顶之弈S11剪纸仙灵羁绊介绍 云顶之弈S11剪纸仙灵羁绊效果是什么 时间:2025-05-14
-
阴阳师以津真天新皮肤怎么获取-吹樱落羽皮肤获得方法 时间:2025-05-14
-
币安有没有客服?-联系客服方式与服务时间说明 时间:2025-05-14
-
原神班尼特圣遗物选择什么词条好 原神班尼特圣遗物词条选择推荐 时间:2025-05-14
-
苏丹的游戏热气球怎么获得 苏丹的游戏热气球获得方法一览 时间:2025-05-14
-
币安提币时间是多久?-不同链上提币到账时间对比 时间:2025-05-14
今日更新
-
10个值得收藏的酷炫转场特效
阅读:18
-
php 扩展错误怎么返回
阅读:18
-
怎么使用php实现用户登录
阅读:18
-
vscode中怎么进行微信小程序的发布(步骤详解)
阅读:18
-
php中header怎么设置编码
阅读:18
-
php无法输出文件怎么办
阅读:18
-
php怎么替换链接为空
阅读:18
-
如何解决php跳转 session丢失问题
阅读:18
-
php ajax获取中文乱码怎么办
阅读:18
-
php 怎么设置cookie记住密码
阅读:18