php做一个readdir返回一个空文件大小

时间:2018-03-07 02:07:56

标签: php null size

使用PHP,我希望将文件列在一个小文件夹中,以及它们的文件大小(以及可选的修改日期)
文件名显示正常,但文件大小显示为空 E.G.-

   $myDir = opendir("xxxxxxxx");    
   // get each entry    
   while($entryName = readdir($myDir)) {     
    if ($entryName != "." && $entryName != "..") {    
      echo $entryName . ' --- ' . filesize($entryName) . ' bytes<br/>';           
      $dirArray[] = $entryName;    
    }   
   }

显示为

file1 --- bytes
 file2 --- bytes
等......

为什么没有拾取文件大小? (我稍后会处理申请)?

1 个答案:

答案 0 :(得分:2)

您已经获取了该特定文件夹的文件,因此您正在循环浏览文件(并且您可以正确获取名称)。但是,当您尝试获取文件大小时,您并未键入完整路径。请记住,您现在已进入目录。

因此,为filesize()函数提供每个文件的整个相对路径,它可以正常工作:

$dir = "test";
$myDir = opendir($dir);    

while($entryName = readdir($myDir)) {     
    if ($entryName != "." && $entryName != "..") {
        echo $entryName . ' --- ' . filesize($test."/".$entryName) . ' bytes<br/>';
        $dirArray[] = $entryName;    
    } 
}

作为旁注,尺寸显示为&#34;空&#34;因为该功能实际上是错误的,但你可能有错误报告,所以没有任何显示。

置于非常有帮助(仅在开发中,在制作中你应该隐藏错误并将其记录到文件等),因为你立刻就可以了知道有些事情是错的,并且大多数时候错误信息几乎都说明了解决问题的方法。

例如,您在错误报告中遇到错误:

  

警告:filesize():stat for ... in ... on xxx

要在脚本持续时间内打开错误报告,请在打开PHP标记后立即添加此行:

error_reporting(E_ALL);

要在php.ini中更长久地启用它,请添加,修改或取消注释(取决于您当前的设置)此行:

error_reporting = E_ALL

详细了解the manual

中的错误报告