【问题标题】:Why isn't PHP filesize() function working?为什么 PHP filesize() 函数不起作用?
【发布时间】:2013-08-02 02:34:13
【问题描述】:

我注意到当我尝试使用这样的路径列出目录的内容时,文件大小不起作用:

../

例如这有效:

if ($handle = opendir('./')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

            echo "File Name: $file | File Size: ". filesize($file)."<br />";            

        }
    }
    closedir($handle);
}

但这不是:

if ($handle = opendir('../')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

            echo "File Name: $file | File Size: ". filesize($file)."<br />";            

        }
    }
    closedir($handle);
}

在最后一个示例中,文件名列出得很好,但我没有得到它们的文件大小,而是得到了这个错误:

Warning: filesize() [function.filesize]: stat failed for dynamic.php in C:\xampp\htdocs\app_file_manager\panel\index.php on line 65

有没有办法让第二个例子工作?

【问题讨论】:

    标签: php


    【解决方案1】:

    filesize($file) 失败,因为$file 是存在于父目录而不是当前目录中的文件的名称。

    您需要在$file 前加上../

    【讨论】:

    • 谢谢。我忘了这个。
    【解决方案2】:

    另外,问题可能出在:

    • 如果文件损坏([function.filesize]: stat failed 错误最常发生在文件上传器上)
    • 在 32 位 linux 中,此错误适用于大于 2GB 的文件

    【讨论】:

      【解决方案3】:

      您为什么不定义一个变量,如$basepath$downloads 文件夹路径并将文件名附加到该变量并使用filesize()。一定要避免./../

      $downloads = "www/base/downloads"; 
      $filepath = $downloads."/".$filename;
      filesize($filepath)
      

      这应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        相关资源
        最近更新 更多