执行读取目录的 PHP 返回一个空文件大小



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

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

这显示为

文件1 --- 字节
文件2 --- 字节
等....

为什么没有选择文件大小?(我稍后会处理文件日期) ?

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

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

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

作为旁注,大小显示为"空",因为函数实际上出错了,但您可能有错误报告关闭,所以没有显示任何内容。

启用它真的很有帮助(仅在开发中,在生产中,您应该隐藏错误并将它们记录到文件或类似文件中),因为您会立即知道出了问题,并且大多数时候错误消息几乎为您阐明了问题的解决方案。

例如,您在以下方面报告错误时遇到的错误:

警告:文件大小():统计失败...在。。。在第三十行

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

error_reporting(E_ALL);

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

error_reporting = E_ALL

在手册中阅读有关错误报告的更多信息

相关内容

  • 没有找到相关文章

最新更新