mkdir()创建目录后可直接用scandir()列出内容,但需检查返回值确认成功、路径正确、有读取权限;示例中用array_diff过滤'.', '..'并重索引输出。

PHP 中用 mkdir() 创建目录后,直接用 scandir() 列出内容是完全可行的,但需确保目录已成功创建、路径正确且有读取权限。
确认 mkdir 是否成功执行
mkdir() 默认不会自动创建多级父目录,也不抛出异常(除非启用异常模式),失败时返回 false。建议检查返回值:
$dir = 'uploads/images';
if (!mkdir($dir, 0755, true)) {
die('创建目录失败:' . $dir);
}
-
0755表示权限(Linux/macOS),Windows 下会被忽略 - 第三个参数
true启用递归创建(如uploads不存在也会一并建好)
用 scandir 读取刚创建的目录
只要目录存在且 PHP 进程有读取权限,scandir() 就能列出内容:
$files = scandir($dir); print_r($files); // 返回数组,含 '.' 和 '..',以及实际文件/子目录
- 结果包含
.(当前目录)和..(上级目录),通常需要过滤 - 若返回
false,说明目录不可读(权限问题或路径错误)
常见问题与处理建议
如果 scandir() 报错或返回空/错误结果,可按以下顺序排查:
- 用
is_dir($dir)确认目录确实存在 - 用
is_readable($dir)检查是否可读(尤其在 Linux 上注意用户/组权限) - 确保路径是绝对路径,或基于当前工作目录(
getcwd())的相对路径一致 - Windows 下注意反斜杠转义,推荐统一用正斜杠或
dirname(__FILE__)拼接
完整小示例(创建 + 列出)
$dir = __DIR__ . '/test_folder';
if (mkdir($dir, 0755, true)) {
$list = scandir($dir);
$list = array_diff($list, ['.', '..']); // 去掉特殊条目
print_r(array_values($list)); // 重索引,输出干净数组
} else {
echo "无法创建或访问 {$dir}";
}
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











