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

PHP上传文件失败:move_uploaded_file触发找不到目录报错求助

问题根因

你的报错核心是move_uploaded_file找不到目标写入路径,属于PHP文件上传的常见问题。

解决步骤

  • 修正相对路径错误
    你当前执行的脚本在php/auth-functions.php目录下,代码里写的相对路径images/uploads/会被解析为php/images/uploads/,不是你预期的项目根目录下的images/uploads文件夹。建议直接用绝对路径避免解析偏差:
// 取当前脚本所在目录的上级目录,对应你的项目根目录 D:\PhpStorm\Projects\Gamesite
$rootPath = dirname(__DIR__);
$target_dir = $rootPath . "/images/uploads/";
$target_file = $target_dir . basename($_FILES['game-team-pic']['name']);
  • 提前校验目录存在性和权限
    如果目标目录不存在,PHP不会自动创建,需要你主动判断生成,同时确保目录有读写权限:
// 目录不存在就递归创建,权限设置为755(Windows环境可忽略权限参数,会自动适配)
if (!file_exists($target_dir)) {
    mkdir($target_dir, 0755, true);
}
  • 调整代码执行逻辑
    你当前的写法是先写入数据库再移动文件,一旦文件移动失败,数据库里就会存入无效的文件路径,建议调整顺序:
// 先判断上传是否正常
if ($_FILES['game-team-pic']['error'] !== UPLOAD_ERR_OK) {
    die("文件上传出错,错误码:" . $_FILES['game-team-pic']['error']);
}
// 移动成功再写入数据库
if (move_uploaded_file($_FILES['game-team-pic']['tmp_name'], $target_file)) {
    $stmt4->execute();
} else {
    die("文件保存失败,请检查目录权限");
}

额外优化建议

直接使用用户上传的原始文件名会导致同名文件覆盖,建议给文件名增加唯一前缀,比如:

$target_file = $target_dir . uniqid() . '-' . basename($_FILES['game-team-pic']['name']);

内容的提问来源于stack exchange,提问作者Maurits Van Beek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:39:03