上传文件到服务器端后进一步推送到sftp服务器

简介: 扩展安装 要想sftp服务端发送文件,就需要php脚本具有作为ssh客户端的能力,所以需先为php安装如下扩展 openssl openssl-dev libssh php ssh 扩展 按照下面的命令进行安装 1 rpm -qa | grep openssl 2 wget http://www.

扩展安装

要想sftp服务端发送文件,就需要php脚本具有作为ssh客户端的能力,所以需先为php安装如下扩展

  • openssl
  • openssl-dev
  • libssh
  • php ssh 扩展

按照下面的命令进行安装

 1 rpm -qa | grep openssl
 2 wget http://www.libssh2.org/download/libssh2-1.6.0.tar.gz
 3 tar zxvf llibssh2-1.6.0.tar.gz
 4 cd libssh2-1.6.0
 5 ./configure
 6 make && make install
 7 wget http://pecl.php.net/get/ssh2-0.11.3.tgz
 8 tar xvf ssh2-0.11.3.tgz
 9 cd ssh2-0.11.3
10 phpize
11 ./configure --with-ssh2
12 make
13 cp modules/ssh2.so /alidata/server/php-5.4.23/lib/php/extensions/no-debug-non-zts-20100525
14 echo 'extension=ssh2.so' >> /alidata/server/php-5.4.23/etc/php.ini
15 service nginx restart
16 php -i | grep ssh2

服务器软件安装路径需要根据实际情况修改

php推送脚本

注意这里服务端已经处理完文件上传,这个推送的部分可以另起一个线程或进程去推送

 1 public function proccessFile($destinationPath, $filename)
 2 {
 3 //parent::proccessFile($destinationPath, $filename); // TODO: Change the autogenerated stub
 4 
 5   $remoteBasePath = '/mnt/java/pipeline/ads/upload/';
 6   $localBasePath = '/alidata/www/aft/';
 7   $connection = ssh2_connect('XXX.XXX.XXX.XXX', 22);
 8   ssh2_auth_password($connection, 'username', 'password');
 9   /*
10   $sftp = ssh2_sftp($connection);
11   SiteHelpers::PE($sftp);
12   $resFile = fopen("ssh2.sftp://$sftp/mnt/java/pipeline/ads/upload", 'w');
13   $srcFile = fopen('/alidata/www/aft/'.$destinationPath.'/'.$filename,'r');
14   $writtenBytes = stream_copy_to_stream($srcFile, $resFile);
15   fclose($resFile);
16   fclose($srcFile);
17   */
18   $dateDir = date("Y-m/d",strtotime("-1 day"));
19 //    SiteHelpers::PE($remoteBasePath.$dateDir.'/'.$filename);
20 //    $sftp = ssh2_sftp($connection);
21 //    ssh2_sftp_mkdir($sftp,$remoteBasePath.$dateDir);
22   ssh2_exec($connection,'mkdir -p '.$remoteBasePath.$dateDir);
23   ssh2_scp_send($connection,
24      $localBasePath.$destinationPath.'/'.$filename,
25      $remoteBasePath.$dateDir.'/'.$filename);
26 
27   Log::info('处理了投放数据');
28   Log::info($destinationPath.'/'.$filename);
29 }

可以看到最后文件成功推送到sftp服务器

目录
相关文章
|
1月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
3月前
Socket网络编程练习题三:客户端上传文件到服务器
Socket网络编程练习题三:客户端上传文件到服务器
|
6月前
|
Linux 网络安全 数据安全/隐私保护
百度搜索:蓝易云 ,linux搭建sftp服务器教程!
现在,您已经成功在Linux上搭建了SFTP服务器。使用您创建的SFTP用户名和密码,您可以通过SFTP客户端连接到服务器并进行文件传输。请确保在配置SFTP用户时使用正确的用户名,并根据需要进行必要的权限和目录设置。
62 0
|
1月前
|
网络协议 Linux 数据安全/隐私保护
本地电脑搭建SFTP服务器,并实现公网访问
本地电脑搭建SFTP服务器,并实现公网访问
|
3月前
|
运维 应用服务中间件 网络安全
利于群晖的File Station+SFTP实现第三方人员快速获取服务器应用日志
利于群晖的File Station+SFTP实现第三方人员快速获取服务器应用日志
78 0
|
4月前
|
应用服务中间件 开发工具 Android开发
Tomcat配置虚拟路径,使上传文件与服务器分离
Tomcat配置虚拟路径,使上传文件与服务器分离
56 0
|
5月前
|
设计模式 存储 API
游戏服务器架构:网络服务器端程序线程划分
游戏服务器架构:网络服务器端程序线程划分
|
6月前
|
JSON C# 数据格式
.net core 上传文件到本地服务器
## 1、本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码 ```csharp [HttpGet, HttpPost, HttpOptions] [Consumes("application/json", "multipart/form-data")] public IActionResult UploadFileToServer([FromForm] IFormCollection file) { try { IFormFile item = null; if(file.IsNull() || file.Count
61 0
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
420 4