1
PHP 连接 sftp 并进行文件的上传和下载
Posted by 撒得一地 on 2023年4月11日 in PHP笔记
最近碰到一个小需求,需要使用 PHP 连接 sftp,然后进行文件的上传和下载。
稍微看了下,要支持 PHP 连接 sftp 需要安装 ssh2 拓展。下面介绍 linux 下 php 安装 ssh2 拓展的步骤。
安装 ssh2 拓展
在安装 ssh2 拓展前需要先安装 libssh2 ,具体安装步骤如下:
wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gz tar -zxvf libssh2-1.8.0.tar.gz cd libssh2-1.8.0 ./configure --prefix=/usr/local/libssh2 make make install
然后安装 ssh2 拓展 :
wget https://pecl.php.net/get/ssh2-1.1.2.tgz tar -zxvf ssh2-1.1.2.tgz cd ssh2-1.1.2 /home/php/local/webserver/php722/bin/phpize ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/home/php/local/webserver/php722/bin/php-config make make install
注意:上面的 /home/php/local/webserver/php722 改为你自己的 php 安装路径。
然后编辑 php.ini 配置文件,加入如下内容:
extension=ssh2.so
然后重启 php 即可生效。
PHP 连接 sftp 并操作文件
下面直接附上 php 连接 sftp,然后上传和下载文件的源代码,代码很简单,几行就搞定,具体代码如下:
<?php $config = array("host"=>"192.168.2.1","user"=>"test","port"=>"17122","passwd"=>"test"); $conn = ssh2_connect($config['host'], $config['port']); if (!ssh2_auth_password($conn, $config['user'], $config['passwd'])) { die('sftp 连接失败'); } $remotFile = "/data/test.txt"; $localPath = '/home/php'; // 如果文件已存在就覆盖 $localFile = 'test.txt'; $localRealFile = $localPath . '/' . $localFile; // 如果文件存在则删除,当然这里也可以根据需求进行修改 if (is_file($localRealFile)) { unlink($localRealFile); } $sftp = ssh2_sftp($conn); $resource = "ssh2.sftp://{$sftp}" . $remotFile; //远程文件拷贝到本地 copy($resource, $localRealFile); //本地上传文件到ftp $remote = "/data/test123.txt"; $local = "/home/php/test123.txt"; copy($local,"ssh2.sftp://{$sftp}".$remote);
注意:上面的文件路径和名称改为你自己的就可以了。
你也可以对上面的代码完善一下,比如封装成类,更加方便的进行操作。
本文地址:https://coderschool.cn/2831.html,转载请注明。
上一篇: 查看 vps 端口是否开放 (被封) 的几个方法
下一篇:已是最新文章
下一篇:已是最新文章
1 Comment
感谢分享,学习一下