为了从远程服务器上传一批文件,我在php程序的for循环中使用ssh2_scp_recv()
。它在某些方面很有用。但是当一个文件夹中有超过67个文件时,它会开始显示错误消息
PHP警告:ssh2_scp_recv():无法接收远程文件
我使用的程序如下:
<?php
$connection = ssh2_connect('host', 22);
ssh2_auth_password($connection, 'user', 'password');
$remote_dir="/remote_dir/";
$local_dir="/local_dir/";
$com ="ls $remote_dir";
$stream = ssh2_exec($connection, $com);
stream_set_blocking($stream,true);
$cmd=fread($stream,4096);
$arr=explode("\n",$cmd);
$total_files=sizeof($arr);
for($i=0;$i<$total_files;$i++){
$file_name=trim($arr[$i]);
if($file_name!=''){
$remote_file=$remote_dir.$file_name;
$local_file=$local_dir.$file_name;
if(ssh2_scp_recv($connection, $remote_file,$local_file)){
echo "File ".$file_name." was copied to $local_dir<br />";
}
}
}
fclose($stream);
有人能给我一些建议吗?
答案 0 :(得分:1)
对fread()
的一次调用可能无法获取所有文件名。使用stream_get_contents
阅读直至结束:
$cmd = stream_get_contents($stream);