文件列表显示某些文件夹中的属性,但不显示其他文件

时间:2011-09-19 12:12:28

标签: php

我在尝试从列表中的文件中获取属性时遇到了麻烦。代码是:

if ($this->dir = opendir($caminho))
{
    $this->itens = array();
    $this->itensTotal = 0;
    $tipos = array("dir" => 0, "file" => 1);

    while ($item = readdir($this->dir))
    {
        if (!in_array($item, $this->skip))
        {
            $t = filetype($item);
            $this->itens[$tipos[$t] . $item] = array("nome" => $item,
                                                     "size" => filesize($item),
                                                     "tipo" => $t,
                                                     "perm" => fileperms($item));

            $this->itensTotal++;
        }
    }
}

看到我的脚本是'file.php'并且在'www'文件夹中。当它读取它自己的文件夹(www)时,它可以正常工作并列出所有文件和目录及其属性。但是当它试图阅读例如: / www / folder / 函数filetype()时,filesize() fileperms()不起作用!我在目录中获取了所有这些警告:

  

警告:filetype()[function.filetype]:bstp中的Lstat失败   第174行的D:\ UniformServer \ UniServer \ www \ files.php

     

警告:filesize()[function.filesize]:bkp中的stat失败   第176行的D:\ UniformServer \ UniServer \ www \ files.php

     

警告:fileperms()[function.fileperms]:bkp in的stat失败   第178行的D:\ UniformServer \ UniServer \ www \ files.php

它会打开文件夹,读取它的内容,但这些函数不会被写入

注意:

  • 正如您所看到的,我正在Windows上运行它
  • $caminho有valids路径

请随时欢迎任何帮助,因为谷歌没有帮助。

2 个答案:

答案 0 :(得分:0)

我认为$item只包含文件的basename。您可能应该在其前面添加目录路径,如下所示:filetype(this->dir . $item)

答案 1 :(得分:0)

文件操作使用系统上的真实目录名,而不是网站的相对路径,然后"/www/folder"可能不存在。从您的评论中,您需要:"D:/UniformServer/UniServer/www/folder"或使用php脚本中的相对路径。