在PHP中,目录遍历和文件信息展示是一个相对常见的任务,可以帮助开发者了解服务器上的文件结构或进行文件管理。以下是一个简单实用的PHP脚本示例,用于遍历指定目录并展示每个文件的基本信息。
<?php
function listDirectory($dir) {
// 初始化一个数组用于存放目录信息
$files = array();
// 检查目录是否存在
if (!is_dir($dir)) {
echo "错误:指定的路径不是一个目录。\n";
return;
}
// 打开目录句柄
if ($handle = opendir($dir)) {
// 循环读取目录中的文件和文件夹
while (false !== ($entry = readdir($handle))) {
// 忽略点和点的父目录
if ($entry != "." && $entry != "..") {
// 拼接完整的文件路径
$fullPath = $dir . DIRECTORY_SEPARATOR . $entry;
// 获取文件信息
$fileInfo = pathinfo($fullPath);
// 添加到数组中
$files[$entry] = array(
'path' => $fullPath,
'type' => $fileInfo['type'],
'perms' => substr(sprintf('%o', fileperms($fullPath)), -4),
'size' => filesize($fullPath),
'mtime' => date('Y-m-d H:i:s', filemtime($fullPath)),
'ext' => $fileInfo['extension'],
'is_dir' => $fileInfo['is_dir'] ? '是' : '否'
);
}
}
// 关闭目录句柄
closedir($handle);
}
// 打印目录信息
foreach ($files as $filename => $file) {
echo "文件名: $filename\n";
echo "路径: " . $file['path'] . "\n";
echo "类型: " . $file['type'] . "\n";
echo "权限: " . $file['perms'] . "\n";
echo "大小: " . $file['size'] . " 字节\n";
echo "修改时间: " . $file['mtime'] . "\n";
echo "扩展名: " . $file['ext'] . "\n";
echo "是否目录: " . $file['is_dir'] . "\n";
echo "---------------------\n";
}
}
// 调用函数,传入需要遍历的目录路径
listDirectory('/path/to/your/directory');
?>
脚本说明
函数定义:
listDirectory函数接收一个参数$dir,即需要遍历的目录路径。目录检查:首先检查传入的路径是否确实是一个目录。
打开目录:使用
opendir函数打开目录,并获取目录句柄。遍历目录:使用
readdir函数读取目录中的每个条目,忽略.和..。获取文件信息:使用
pathinfo函数获取文件的基本信息,包括类型、权限、大小、修改时间和扩展名。文件属性:使用
fileperms和filesize函数获取文件的权限和大小,使用filemtime函数获取文件的最后修改时间。打印信息:最后,循环遍历数组,打印出每个文件的信息。
使用注意事项
- 确保脚本有足够的权限访问指定的目录。
- 脚本仅展示了文件的基本信息,根据需要可以扩展更多功能,例如递归遍历子目录。
- 在生产环境中运行脚本时,请确保处理好潜在的文件操作安全风险。
