可以确定路径正确无误,已尝试相对路径和绝对路径,均返回空数组。
这情况有没可能是linux的权限问题?
因为之前在一台服务器上运行正常,现在搬到另外一台服务器上就出问题了。

解决方案 »

  1.   

    有可能,在 liunx  用 ls -ld 检查一下文件的权限
      

  2.   

    检查 open_basedir 的值
    当然你也可以
    ini_set('open_basedir', ini_get('open_basedir') . ';你需要遍历的目录/');
    添加可访问的路径不会是权限问题,除了系统文件,读权限总是有的
      

  3.   

    ini_get('open_basedir') 为空字符串ini_set('open_basedir', realpath('/home/test/download/')); 运行这一句就执行不下去了,即使error_reporting(-1); 也没错误提示,是什么情况呀?
      

  4.   

    给 glob 的参数串是什么?路径对吗?
    glob 不会对不存在的路径报错,而只是返回空数组
      

  5.   

    $dir = realpath('/home/test/download/');
    var_dump(glob($dir.'*'));   //空数组用的绝对路径,看过是正确的。
      

  6.   

    /home/test/download 已经是就对路径了,有没有 realpath 都一样var_dump(file_exists('/home/test/download'));
      

  7.   

    $dir = realpath('/home/test/download/');
    var_dump(glob($dir.'/*')); //空数组试试看
      

  8.   


    var_dump(file_exists('/home/test/download'));    //bool(false)
      

  9.   

    如果  glob('/home/test/download/') 得到空数组的话,就表示路径 /home/test/download/ 不存在
      

  10.   


    我纠正一下10楼的回答。
    var_dump(file_exists('/home/test/download')); //bool(true)
    var_dump(glob('/home/test/download/*'));  //空数组
      

  11.   

    var_dump(glob('/home/test/download'));  //  会输出/home/test/download
      

  12.   

    好吧,我们重新开始
    var_dump(glob('/home/test/download'));//输出 /home/test/download
    var_dump(glob('/home/test/download/'));//输出 /home/test/download/
    var_dump(glob('/home/test/download/*'));//输出 空数组这就是说目标目录中没有文件,准确的说是没有可读文件
      

  13.   

    你确认/home/test/download/*下有文件吗?如果有就把文件的列表列出来看看,看两个权限一个是/home/test/download目录的权限,一个是/home/test/download目录下文件的权限。
      

  14.   

    /home/test/download/ 内确定有文件,我只是从一个服务器上搬到另外一个服务器,目录结构,文件,数据库什么都没变。/home/test/download/  目录权限是777,/home/test/download/ 里面的文件权限是644。但只是读而已,644足够了吧?况且我已经尝试修改成777,还是不行呢。有一点我忘记说了,这情况不是一直都这样的,期间曾经试过没修改php代码,却可以读到文件。只是不知道服务器方面是否有修改过配置文件之类的。
      

  15.   

    找到原因了,应该是文件名编码问题。我用ssh登录看是正常的汉字文件名,用putty看是乱码的文件名。估计是之前那台服务器跟现在这台服务器的编码不一样导致的吧?我把文件名的编码修改了一遍之后就可以glob到了。