Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试使用fopen和SSH2获取文件内容时出错_Php_Ssh_Fopen_File Get Contents_Ssh2 Sftp - Fatal编程技术网

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

Php 尝试使用fopen和SSH2获取文件内容时出错,php,ssh,fopen,file-get-contents,ssh2-sftp,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);

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

连接工作正常:

$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://Resource id#4/home/myfile.xml)[function.fopen]:无法打开流:第38行的/home/xxxxxx/public_html/xxx.php中的操作失败

第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\u get\u contents(“ssh2.sftp://$sftp/home/$data”)也不起作用

仍然有错误:

警告:文件获取内容()[函数.文件获取内容]:无法打开ssh2。sftp://Resource 第40行的/home/xxxxxx/public_html/xxxx.php中远程主机上的id#3/xxx.xml


我一点也不知道。。。有人能帮我吗?

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

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

在多次尝试失败后,我放弃了php内置的ssh2函数,开始使用:谢谢,但这不是重点,我绝对需要这样做,所以谢谢,但不谢谢!;)可能是权限问题。文件夹上设置了..7,7,7。。。所以这似乎不是一个问题。。。有人知道吗?我仍然有一个错误,但现在它的Ressource id/#3而不是#4。。。我一点也不知道。我重置了堆栈溢出密码以返回到我的帐户来更新此密码并感谢您的解决方案,因为我尝试了100件事&在使用您的解决方案之前从未通过服务器错误&将资源强制转换为整数。荣誉