1
<?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');

那个工作得很好,但如果你在做公钥认证,它就行不通,例如。

4

1 回答 1

4

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

$ssh = ssh2_connect('domain.tld');
$resSftp= ssh2_sftp($ssh);
$sftp = fopen('ssh2.sftp://'.$resSftp.'/home/username/1mb', 'w');
于 2014-01-07T12:45:58.150 回答