生产环境应优先使用绝对路径,因其从根目录开始、不受当前工作目录影响;相对路径仅适用于开发调试或简单脚本,需谨慎处理工作目录和安全隐患。

推荐在生产环境中优先使用绝对路径,相对路径仅适合开发调试或简单脚本场景。
绝对路径更可靠
绝对路径从文件系统根目录开始(如 /var/www/html/uploads 或 C:\inetpub\wwwroot\logs),不受当前工作目录(getcwd())影响。PHP 脚本可能被不同方式调用(CLI、Web、定时任务),工作目录不一致时,相对路径容易指向错误位置,导致目录创建失败或写入到意外目录。
- 可用
__DIR__或dirname(__FILE__)动态拼接,确保路径稳定:mkdir(__DIR__ . '/uploads/images', 0755, true); - 配合
realpath()可进一步校验路径合法性,避免符号链接歧义。
相对路径的适用边界
相对路径(如 'cache'、'./temp')写起来简洁,但隐含依赖当前执行上下文:
- 仅建议用于本地开发、单文件工具脚本或明确控制了运行环境的 CLI 小程序;
- 若必须用,应先用
chdir()显式切换工作目录,或用getcwd()日志记录实际解析路径,便于排查; - 注意:
./和无前缀路径行为相同,但../在 Web 环境中极易越权访问上级目录,存在安全隐患。
权限与递归设置需同步考虑
无论路径类型,都应搭配 $recursive = true 和合理权限(如 '0755' 字符串形式传参),并前置检查是否存在:
立即学习“PHP免费学习笔记(深入)”;
- 用
is_dir($path)避免重复创建; - 权限数字务必加引号(如
'0755'),防止 PHP 新版本误解析为常量报错; - 创建失败时,用
error_get_last()或clearstatcache()辅助诊断是否因父目录缺失或权限不足导致。
路径选择本质是可控性问题——绝对路径把不确定性收口到代码里,相对路径把不确定性交给运行环境。对稳定性有要求的项目,不复杂但容易忽略。



















