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

PHP实现图片上传功能触发move_uploaded_file报错如何解决

问题原因

本次报错核心是move_uploaded_file函数无法找到目标存储目录,和php.ini中已开启的file_uploads配置无关。

解决方案
  • 确认并创建目标存储目录
    你代码中定义的目标路径是相对路径image/promotions/,该路径是相对于当前执行的upload.php所在目录(即W:\xampp\htdocs\elkssar\functions\)解析的,你需要先确认该目录下是否存在image/promotions层级目录,不存在的话手动创建即可。也可以在代码中加入自动创建目录的逻辑:
// 定义完目标目录后加入以下代码
if (!is_dir($target_dir)) {
    // 第三个参数true表示递归创建多级目录,Linux环境下权限设为0755即可,Windows环境可忽略权限参数
    mkdir($target_dir, 0755, true);
}
  • 替换为绝对路径避免解析误差
    相对路径容易因为脚本执行位置变化出现解析错误,建议使用站点根目录拼接绝对路径,示例:
// 替换原来的$target_dir定义即可,路径根据你实际站点目录结构调整
$target_dir = $_SERVER['DOCUMENT_ROOT'] . '/elkssar/image/promotions/';
  • 检查目录读写权限
    Windows系统下给image/promotions目录开放Everyone的读写权限,Linux系统下执行权限设置命令chmod -R 755 你的image/promotions目录实际路径即可。
修正后的完整代码
<?php
// 改为绝对路径,避免相对路径解析错误
$target_dir = $_SERVER['DOCUMENT_ROOT'] . '/elkssar/image/promotions/';
// 自动创建目录,不存在则生成
if (!is_dir($target_dir)) {
    mkdir($target_dir, 0755, true);
}
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 校验是否为真实图片
if(isset($_POST["upload"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "文件为图片类型 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "文件不是图片类型。";
    $uploadOk = 0;
  }
}

// 校验文件是否已存在
if (file_exists($target_file)) {
  echo "抱歉,文件已存在。";
  $uploadOk = 0;
}

// 校验文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "抱歉,文件过大。";
  $uploadOk = 0;
}

// 校验文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "抱歉,仅支持JPG、JPEG、PNG、GIF格式文件。";
  $uploadOk = 0;
}

// 校验不通过则终止上传
if ($uploadOk == 0) {
  echo "抱歉,文件上传失败。";
// 所有校验通过则执行上传
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "文件". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). "上传成功。";
  } else {
    echo "抱歉,上传文件时出现错误。";
  }
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:33:01