You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用move_uploaded_file上传文件提示权限拒绝无法保存怎么解决

问题根因

报错信息里的Permission denied明确指向:Web服务器运行PHP的进程没有目标存储目录img/的写入权限,你的前端表单、核心上传逻辑本身没有问题。

解决步骤
  • 先确认目标目录存在且路径正确
    你代码中使用了相对路径img/,需要确保该目录和create_new_article.php处于同一层级。如果目录不存在,可以在上传逻辑前先执行目录创建:
    $target_dir = "img/";
    // 新增目录判断创建逻辑
    if (!file_exists($target_dir)) {
        mkdir($target_dir, 0755, true);
    }
    
  • 修改img目录的写入权限
    如果你使用的是Linux服务器,通过SSH进入站点根目录/home/kloucto2/www/后执行以下命令:
    首先尝试给目录设置通用可写权限,测试是否是权限导致的问题:
    chmod -R 755 img/
    如果755权限依旧报错,可以先临时设置777权限验证问题根因,正式环境不建议使用777权限,建议找到PHP运行的进程用户(通常是www-data、apache、nginx等),将目录所有者修改为对应的进程用户:
    chown -R 运行PHP的用户名:用户组 img/
代码优化建议
  • 不要直接使用用户上传的原始文件名作为存储文件名,容易出现重名文件覆盖的问题,建议拼接唯一标识:
    $filename = uniqid() . '_' . $path['filename'];
    
  • 添加上传文件校验逻辑,避免恶意文件上传风险,比如你要上传缩略图,可以限制仅允许图片格式:
    $allow_ext = ['jpg', 'jpeg', 'png', 'gif'];
    if (!in_array(strtolower($ext), $allow_ext)) {
        die('仅允许上传jpg、png、gif格式的图片');
    }
    

内容的提问来源于stack exchange,提问作者ToklCz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:39:02