php oss sdk 的read_dir方法有两处bug
1.调用方法是传入的第二个参数里面如果没有包含".|.." 传入的参数会把这个默认值覆盖掉,导致死循环。
2.原来的方法传入$recursive=true,会把子目录下面的文件都放到根目录里面
放出read_dir方法的修正版本
private function read_dir($dir, $exclude = ".svn", $recursive = false){
static $file_list_array = array();
static $base_path = '';
empty($base_path) and $base_path=$dir;
$exclude_array = explode("|", $exclude);
$exclude_array = array_unique(array_merge($exclude_array,array('.','..')));
//读取目录
if($handle = opendir($dir)){
while ( false !== ($file = readdir($handle))){
if(!in_array(strtolower($file),$exclude_array)){
$new_file = $dir.'/'.$file;
if(is_dir($new_file) && $recursive){
$this->read_dir($new_file,$exclude,$recursive);
}else{
$file_list_array[] = array(
'path' => $new_file,
'file' => ltrim(str_replace($base_path,'',$new_file),'/')
);
}
}
}
closedir($handle);
}
return $file_list_array;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。