尝试使用fopen和SSH2获取文件内容时出错

时间:2014-04-09 19:57:55

标签: php ssh fopen file-get-contents ssh2-sftp

我正在尝试: - 连接到服务器 - 列出所有文件 - 读取文件并回显内容。

连接效果很好:

$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行

我没有线索......有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。通过在将$ sftp资源用作字符串之前将$ sftp资源转换为整数来解决。 应该这样工作:

$sftp = (int)$sftp;
$stream = fopen("ssh2.sftp://$sftp/home/".$currentFilename, 'r');