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

PHP文件上传遇404对象未找到错误,疑为路径问题求助

解决文件上传时的404路径错误问题

我看你在上传文件时碰到了持续跳转到404页面的问题,而且已经猜到是路径设置的问题——没错,你的核心问题确实出在路径的写法和相对路径的指向上,结合XAMPP的目录结构和Windows系统的特性,咱们一步步来解决:

问题根源分析

  1. 路径分隔符错误:你代码里用了..\upload,在PHP中Windows的反斜杠\是转义字符,这会导致路径被解析成错误的格式,PHP无法正确识别目标目录。
  2. 相对路径指向模糊:假设你的PHP脚本放在C:\xampp\htdocs\PHP\下,../upload会指向C:\xampp\htdocs\upload,如果这个目录不存在、或者你实际想把文件传到PHP文件夹下的upload目录,那路径就完全错了。
  3. 路径拼接漏洞:你的代码里$target_dir末尾没有加斜杠,拼接文件名时可能会变成..\uploadfilename.jpg,这也会导致路径无效。

修正后的代码示例

<?php
// 改用正斜杠(PHP跨平台支持),末尾加斜杠避免拼接错误
$target_dir = "../upload/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$uploadError = "Error";
$fileType = pathinfo($target_file, PATHINFO_EXTENSION);

if(isset($_POST["submit"])) {
    // 先检查目标目录是否存在,不存在则递归创建
    if (!is_dir($target_dir)) {
        mkdir($target_dir, 0777, true); // 0777是开放权限,生产环境可调整
    }

    // 示例:文件类型验证(可根据需求扩展)
    $allowedTypes = ["jpg", "png", "jpeg", "gif"];
    if(!in_array($fileType, $allowedTypes)) {
        $uploadError = "只允许上传JPG, JPEG, PNG & GIF格式的文件.";
        $uploadOk = 0;
    }

    // 执行文件上传
    if ($uploadOk == 1) {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "文件 ". htmlspecialchars(basename($_FILES["fileToUpload"]["name"])). " 已成功上传!";
        } else {
            echo "上传失败,请检查目录写入权限!";
        }
    }
}
?>

额外排查建议

  • 验证真实路径:可以在代码里加一句echo realpath($target_dir);,看看输出的真实路径是不是你预期的目录(比如C:\xampp\htdocs\upload),快速确认路径是否正确。
  • 表单Action检查:如果表单的action属性指向了错误的页面,也会导致404,确保action是空值(提交到当前页面)或者正确的脚本路径,比如<form action="" method="post" enctype="multipart/form-data">。
  • 权限确认:XAMPP的htdocs目录默认有写入权限,但如果是手动创建的upload目录,右键检查属性,确保“只读”没被勾选,并且PHP进程有写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:02:26