PHP fsize - 失败的可能原因?

时间:2014-03-02 20:20:01

标签: php file

我有一个问题,我可以看到在互联网上被问到,但我没有看到一个可以帮助我的答案。

长话短说;我有一个PHP脚本列出目录中的文件(文件名,ctime)。文件名和文件名都是创建日期工作正常,但我正在努力与文件大小。

这是列出特定文件夹中文件的代码:     

    //show only files with 'xml' extension
    if ($files[$b] != "." && $files[$b] != ".." && $ext == 'xml') {
        echo "<tr style=\"border: 1px solid gray; background-color:";
        if ($even) {
            echo "#fff5cc;\">";
        } else {
            echo "white;\">";
        }
        echo "<td>$files[$b]";
        echo "(" . filesize($files[$b]) . ")";
        //echo filesize($files[$b]);
        echo "</td>";
        echo "<td>" . date("F d Y H:i:s.", filectime(UPLOAD_FOLDER . "/" . $files[$b]))     . "</td>";

    }
    $even = !$even;
}
?>

关键内容发生在显示文件大小的行代码中; PHP错误是“统计失败...”。我不得不承认我不知道为什么因为我能够打开文件(其中一个函数实际打开XML文件并将其内容放到文本区域)。

由于大多数答案都是关于权限的,我实际上尝试将777权限添加到测试文件中,将777权限添加到保存文件的文件夹中,但无济于事。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我相信您忘记将完整路径链接到该文件。看看下面几行:

filectime(UPLOAD_FOLDER . "/" . $files[$b])

所以,同样应该到处都是:

filesize(UPLOAD_FOLDER . "/" . $files[$b])

评论如下:

另外,我认为$b是一个迭代器。如果是,则不需要$even变量,因为您可以使用模运算符:

if($b%2==0)
  //event

使用其他变量不是问题,但是了解其他可能的解决方案是很好的。

我还会告诉您有一个glob功能。您可以使用它来获取XML文件列表:

$list = glob(UPLOAD_FOLDER . "/*.xml");