dirname() 用于获取路径的父目录,纯字符串解析、跨平台兼容;输入如 /var/www/html/index.php 返回 /var/www/html,末尾斜杠不影响结果,空输入返回 .,.. 不被归约,需真实路径解析时应配合 realpath()。

dirname() 函数用于获取指定路径的父目录(即去掉最后一级文件名或子目录后的路径),是 PHP 中处理文件系统路径最基础也最常用的函数之一。它不依赖实际文件是否存在,纯字符串解析,轻量、可靠、实测稳定。
基本用法与返回逻辑
该函数接收一个字符串路径,返回其上级目录路径:
- 输入
/var/www/html/index.php→ 返回/var/www/html - 输入
./images/logo.png→ 返回. - 输入
data/config.ini→ 返回data - 输入
filename.txt→ 返回.(当前目录) - 输入
/或C:\(Windows 根目录)→ 返回/或C:
跨平台兼容性注意点
dirname() 自动识别操作系统路径分隔符(/ 或 \),但建议统一使用正斜杠书写路径以避免歧义:
- 在 Windows 上传入
C:\xampp\htdocs\test.php,返回C:\xampp\htdocs - 若混用(如
C:/xampp\htdoc/test.php),PHP 仍能正确解析,但可读性和维护性下降 - 推荐写法:
dirname(__FILE__) . '/config/',比拼接反斜杠更安全
配合 __DIR__ 和 __FILE__ 的典型实践
常与魔术常量组合,精准定位项目目录结构:
-
__DIR__等价于dirname(__FILE__),PHP 5.3+ 推荐直接用__DIR__ - 加载同级配置:
require_once dirname(__FILE__) . '/config.php'; - 向上跳两级:
dirname(dirname(__FILE__))或dirname(__DIR__) - 获取项目根目录(假设当前在
/app/controllers/):dirname(dirname(__DIR__))
常见误区与规避建议
dirname() 是纯字符串操作,不校验路径真实性,需注意边界情况:
- 末尾带斜杠不影响结果:
dirname('/path/to/file/') === '/path/to' - 空字符串或 null 输入会返回
.,建议前置判断:if ($path) { $dir = dirname($path); } - 相对路径中
..不会被解析为“上层”,只是普通字符;如dirname('a/../b')返回a,不是. - 需真实路径解析(含
..归约、符号链接处理)应改用realpath()配合 dirname()
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











