<?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');
那个工作正常,但是如果你正在进行公钥认证,它就行不通了。
答案 0 :(得分:4)
正如hakre在评论中提到的,你应该使用
$ssh = ssh2_connect('domain.tld');
$resSftp= ssh2_sftp($ssh);
$sftp = fopen('ssh2.sftp://'.$resSftp.'/home/username/1mb', 'w');