我正在尝试: - 连接到服务器 - 列出所有文件 - 读取文件并回显内容。
连接效果很好:
$conn_id = ssh2_connect('xxx.com', 22);
$login_result = ssh2_auth_password($conn_id, 'xxxxxx', 'xxxxxxxxx');
$sftp = ssh2_sftp($conn_id);
$dir = "ssh2.sftp://$sftp/home";
$ftp_contents = scanFilesystem($dir);
然后我循环遍历目录并获取所有文件名,就像魅力一样:
foreach($ftp_contents as $key => $currentFilename){
echo($currentFilename);
}
然后我尝试获取文件的内容....而且它不起作用。
$stream = fopen("ssh2.sftp://$sftp/home/".$currentFilename, 'r');
echo($stream);
输出错误:
警告:fopen(ssh2.sftp://资源ID#4 / home / myfile.xml)[function.fopen]:无法打开流:/home/xxxxxx/public_html/xxx.php上线操作失败38
第38行是foreach的结尾。
我尝试:
fopen("ssh2.sftp://$sftp/home/".$currentFilename, 'r');
fopen("ssh2.sftp://$sftp/".$currentFilename, 'r');
fopen("/home/".$currentFilename, 'r');
fopen("home/".$currentFilename, 'r');
没有什么工作,总是同一类型的错误,有人可以帮助我吗? 感谢。
更新:我尝试使用:$stream = file_get_contents("ssh2.sftp://$sftp/home/$data");
无法正常工作......
仍然有错误:
警告:file_get_contents()[function.file-get-contents]:无法在/home/xxxxxx/public_html/xxxx.php上的远程主机上打开ssh2.sftp://资源ID#3 / xxx.xml第40行
我没有线索......有人可以帮助我吗?
答案 0 :(得分:0)
我有同样的问题。通过在将$ sftp资源用作字符串之前将$ sftp资源转换为整数来解决。 应该这样工作:
$sftp = (int)$sftp;
$stream = fopen("ssh2.sftp://$sftp/home/".$currentFilename, 'r');