glob遍历文件夹返回空数组 可以确定路径正确无误,已尝试相对路径和绝对路径,均返回空数组。这情况有没可能是linux的权限问题?因为之前在一台服务器上运行正常,现在搬到另外一台服务器上就出问题了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有可能,在 liunx 用 ls -ld 检查一下文件的权限 检查 open_basedir 的值当然你也可以ini_set('open_basedir', ini_get('open_basedir') . ';你需要遍历的目录/');添加可访问的路径不会是权限问题,除了系统文件,读权限总是有的 ini_get('open_basedir') 为空字符串ini_set('open_basedir', realpath('/home/test/download/')); 运行这一句就执行不下去了,即使error_reporting(-1); 也没错误提示,是什么情况呀? 给 glob 的参数串是什么?路径对吗?glob 不会对不存在的路径报错,而只是返回空数组 $dir = realpath('/home/test/download/');var_dump(glob($dir.'*')); //空数组用的绝对路径,看过是正确的。 /home/test/download 已经是就对路径了,有没有 realpath 都一样var_dump(file_exists('/home/test/download')); $dir = realpath('/home/test/download/');var_dump(glob($dir.'/*')); //空数组试试看 var_dump(file_exists('/home/test/download')); //bool(false) 如果 glob('/home/test/download/') 得到空数组的话,就表示路径 /home/test/download/ 不存在 我纠正一下10楼的回答。var_dump(file_exists('/home/test/download')); //bool(true)var_dump(glob('/home/test/download/*')); //空数组 var_dump(glob('/home/test/download')); // 会输出/home/test/download 好吧,我们重新开始var_dump(glob('/home/test/download'));//输出 /home/test/downloadvar_dump(glob('/home/test/download/'));//输出 /home/test/download/var_dump(glob('/home/test/download/*'));//输出 空数组这就是说目标目录中没有文件,准确的说是没有可读文件 你确认/home/test/download/*下有文件吗?如果有就把文件的列表列出来看看,看两个权限一个是/home/test/download目录的权限,一个是/home/test/download目录下文件的权限。 /home/test/download/ 内确定有文件,我只是从一个服务器上搬到另外一个服务器,目录结构,文件,数据库什么都没变。/home/test/download/ 目录权限是777,/home/test/download/ 里面的文件权限是644。但只是读而已,644足够了吧?况且我已经尝试修改成777,还是不行呢。有一点我忘记说了,这情况不是一直都这样的,期间曾经试过没修改php代码,却可以读到文件。只是不知道服务器方面是否有修改过配置文件之类的。 找到原因了,应该是文件名编码问题。我用ssh登录看是正常的汉字文件名,用putty看是乱码的文件名。估计是之前那台服务器跟现在这台服务器的编码不一样导致的吧?我把文件名的编码修改了一遍之后就可以glob到了。 IE下setcookie失效 如何生成个类似TREE结构的数组? 寻一个GD库处理动态图的方法 请教个PHP数组的问题 正规表达式匹配的问题 linux 服务器 mysql 编码方式没有gbk,如何添加?我是远程操作.... 请问通过GET方式传递一个参数,这个参数有长度的限制吗? php+sqlserver遇到一个表单提交的怪问题 如何将outlook导出的信件内容可读(文本格式)-----一个值得关注的问题 php页面显示记录的时候时有时无,求高手帮忙解答啊!!! 大牛们看看PHP调用外部命令win系统下删目录 请问CENTOS如何连接SQL SERVER呢?
当然你也可以
ini_set('open_basedir', ini_get('open_basedir') . ';你需要遍历的目录/');
添加可访问的路径不会是权限问题,除了系统文件,读权限总是有的
glob 不会对不存在的路径报错,而只是返回空数组
var_dump(glob($dir.'*')); //空数组用的绝对路径,看过是正确的。
var_dump(glob($dir.'/*')); //空数组试试看
var_dump(file_exists('/home/test/download')); //bool(false)
我纠正一下10楼的回答。
var_dump(file_exists('/home/test/download')); //bool(true)
var_dump(glob('/home/test/download/*')); //空数组
var_dump(glob('/home/test/download'));//输出 /home/test/download
var_dump(glob('/home/test/download/'));//输出 /home/test/download/
var_dump(glob('/home/test/download/*'));//输出 空数组这就是说目标目录中没有文件,准确的说是没有可读文件