使用 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
在手册中阅读有关错误报告的更多信息