<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');
// puts an x-byte file named filename.remote on the SFTP server,
// where x is the size of filename.local
$sftp->put('filename.remote', 'filename.local', NET_SFTP_LOCAL_FILE);
6条答案
按热度按时间7ajki6be1#
PHP有ssh 2流 Package 器(默认情况下禁用),因此您可以通过使用
ssh2.sftp://
作为协议,将sftp连接用于任何支持流 Package 器的函数,例如或-同时使用ssh2 extension时
参见http://php.net/manual/en/wrappers.ssh2.php
在一个侧面说明,也有相当一堆关于这个主题的问题已经:
5w9g7ksd2#
ssh2函数不是很好,很难使用,也很难安装,使用它们会保证你的代码没有可移植性,我的建议是使用phpseclib, a pure PHP SFTP implementation。
ar7v8xwq3#
我发现“phpseclib”应该可以帮助您实现这一点(SFTP和许多其他特性)。http://phpseclib.sourceforge.net/
要将文件放到服务器,只需调用(代码示例来自http://phpseclib.sourceforge.net/sftp/examples.html#put)
gg0vcinb4#
安装Flysystem v1:
然后:
读取:
https://flysystem.thephpleague.com/v1/docs/
升级到v2:
https://flysystem.thephpleague.com/v2/docs/advanced/upgrade-to-2.0.0/
安装
然后:
wvt8vs2t5#
在搞砸了PECL ssh 2之后,我决定看看phpseclib 3,它是开箱即用的。服务器上没有安装。我用composer安装了它,并把代码放进去。它有很多有用的东西,而且是免费的。下面是步骤:
1.在你的PHP应用文件夹中运行这个composer安装程序。我使用了VS代码,并打开了一个终端窗口(需要先在你的机器上安装Composer):
编写器需要phpseclib/phpseclib:~3.0
1.使用下面的基本示例:https://phpseclib.com/docs/sftp
使用phpseclib3\Net\SFTP;
$sftp =新的SFTP(“本地主机”);
$sftp-〉登录('用户名','密码');
$sftp-〉put('文件名.远程','文件名.本地',SFTP::源本地文件);
其他有用链接:GitHub:https://github.com/phpseclib/phpseclib和网址:https://phpseclib.com/
wwtsj6pe6#
我执行了一个完全的拷贝,写了一个类,创建一个批处理文件,然后通过
system
调用sftp
。不是最好的(或最快的)方法,但它能满足我的需要,并且不需要在PHP中安装任何额外的库或扩展。如果您不想使用
ssh2
扩展,则可以使用