扫盲 2026.10.30 18:05 22 次浏览 0 条评论

PHP图片保存目录权限

PHP上传图片,报错最多的就是 move_uploaded_file 那句 Permission denied。代码本身没毛病,纯粹是目录不让写。

Windows 下用小皮面板基本不用管,站点目录默认能写,只要确认 uploads 文件夹真的建了。Linux 才是常见问题,PHP 跑在 www 用户下,目录是 root 建的,当然写不进去。

稳妥的写法是先判断再创建,顺手给上权限:

$dir = __DIR__ . '/uploads/';      // 保存目录
if (!is_dir($dir)) {
    mkdir($dir, 0777, true);       // 不存在就递归创建
}
$file = $dir . time() . '.jpg';    // 时间戳当文件名,避免重名
if (!move_uploaded_file($_FILES['img']['tmp_name'], $file)) {
    exit('保存失败,检查目录权限');
}
echo 'OK';

还是失败就上命令补一下:

chown -R www:www uploads   # 目录归 PHP 运行用户
chmod -R 755 uploads       # 给写权限

小皮面板更省事,文件管理里右键改权限,勾上写入就行。另外父目录没权限也白搭,子目录都建不出来,别只盯着最后一层看。

说点什么 0

行思随记

欢迎来到:行思随记