Laravel创建文件夹报错mkdir(): No such file or directory 技术求助
解决Laravel中mkdir(): No such file or directory报错问题
我之前也碰到过一模一样的问题!这个报错的核心原因几乎都是:你要创建的目标文件夹的父目录不存在——PHP原生的mkdir()默认只会创建最后一级目录,如果它的父级目录还没建好,就会直接抛出这个错误。下面给你几个靠谱的解决办法:
方法一:用Laravel自带的Filesystem工具(推荐)
Laravel封装了非常好用的文件操作工具,能自动帮你递归创建所有缺失的父目录,不用自己手动处理层级:
use Illuminate\Support\Facades\File; // 构建你要创建的目标目录路径,比如存在storage/app下的custom/uploads $targetDirectory = storage_path('app/custom/uploads'); // 递归创建目录:第二个参数是权限,第三个true表示递归创建父级,第四个true表示目录已存在时不报错 File::makeDirectory($targetDirectory, 0755, true, true);
参数说明:
0755:目录权限,你可以根据需求调整为0775(如果需要组内写入权限)- 第三个
true:关键!开启递归创建所有不存在的父目录 - 第四个
true:可选,避免目录已存在时抛出错误
方法二:用原生mkdir()但开启递归
如果你坚持用PHP原生函数,一定要加上第三个参数true来开启递归创建:
// 同样用Laravel的路径辅助函数确保路径正确 $targetDirectory = storage_path('app/custom/uploads'); // 第三个参数true是核心,让PHP自动创建所有缺失的父目录 mkdir($targetDirectory, 0755, true);
额外注意事项
路径一定要用绝对路径:别用相对路径(比如
../storage/app/xxx),优先用Laravel提供的路径辅助函数:storage_path():指向项目的storage目录public_path():指向public目录base_path():指向项目根目录
这些函数能帮你避免因当前工作目录变化导致的路径错误。
检查目录权限:如果上面的方法还是报错,大概率是目录权限不足。可以在项目根目录运行以下命令(Linux/macOS环境):
chmod -R 755 storage/ chown -R www-data:www-data storage/ # 这里的www-data是你的web服务器用户,比如Nginx/Apache用这个,Apache也可能是apache用户Windows环境的话,右键
storage目录,设置为可读写权限即可。
内容的提问来源于stack exchange,提问作者Onyx
相关产品推荐
相关产品推荐

