提供的资源不是有效的SSH2 SFTP资源

时间:2013-01-13 22:39:15

标签: php libssh2

<?php
$ssh = ssh2_connect('domain.tld');
ssh2_auth_password($ssh, 'username', 'password');

$start = microtime(true);
$sftp = fopen('ssh2.sftp://'.$ssh.'/home/username/1mb', 'w');

fwrite($sftp, str_repeat('a', 1024 * 1024));
$elapsed = microtime(true) - $start;

echo "took $elapsed seconds";

该代码段给了我一个

  

PHP警告:fopen():提供的资源不是...中的有效SSH2 SFTP资源

错误。为什么呢?

$sftp = fopen('ssh2.sftp://username:password@domain.tld:22/home/user/1mb', 'w');

那个工作正常,但是如果你正在进行公钥认证,它就行不通了。

1 个答案:

答案 0 :(得分:4)

正如hakre在评论中提到的,你应该使用

$ssh = ssh2_connect('domain.tld');
$resSftp= ssh2_sftp($ssh);
$sftp = fopen('ssh2.sftp://'.$resSftp.'/home/username/1mb', 'w');