2011-03-14 233 views
0

在Ubuntu机器下,我想创建一个脚本,允许我通过SFTP发送文件。为此,我使用下面的代码:通过sftp发送文件

$connection = ssh2_connect('XXX', 22); 

if (ssh2_auth_password($connection, 'USER', 'PASS')) { 
    echo "Authentication Successful!\n"; 
} else { 
    die('Authentication Failed...'); 
} 

的第一结果:

Warning: ssh2_auth_password(): Authentication failed for ... 

从我读了很多这延长ssh2.so失踪教程的思想。所以我安装它,仍然没有结果。

+0

正确的用户名和paswword可以与连接 – bensiu 2011-03-14 15:32:59

回答

-2

可以使用流机制:ADRESS目标文件

$dest = "ftps://user:[email protected]/destinationfile.txt"

,然后用标准的PHP copy功能:

copy($from, $dest) 
+3

-1帮助。 [SFTP](http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)与[FTPS](http://en.wikipedia.org/wiki/FTPS)不一样。 – 2011-03-14 15:51:14

+0

它给这个错误:警告:复制()[function.copy]:连接()失败:连接被拒绝在 – FzhEmca 2011-03-14 16:54:17

1

,而不是基于SSH2功能,我建议phpseclib, a pure PHP SFTP implementation

使用phpseclib你可以这样做:

<?php 
include('Net/SFTP.php'); 

$sftp = new Net_SFTP('www.domain.com'); 
if (!$sftp->login('username', 'password')) { 
    exit('Login Failed'); 
} 

echo $sftp->pwd() . "\r\n"; 
$sftp->put('filename.ext', file_get_contents('localfile.data');); 
print_r($sftp->nlist()); 
?> 
+0

我不现在当我可以下载SFTP类,帮助恳求 – FzhEmca 2011-03-14 17:49:01

+0

结果:登录失败,但在CMD它工作非常好,参数connexions是正确的... :( – FzhEmca 2011-03-14 18:06:13

+0

@FzhEmca:你可以从http://sourceforge.net/projects/phpseclib/files/phpseclib0.2.1a.zip/下载下载 – anubhava 2011-03-14 19:30:33