PHP文件上传遇404对象未找到错误,疑为路径问题求助
解决文件上传时的404路径错误问题
我看你在上传文件时碰到了持续跳转到404页面的问题,而且已经猜到是路径设置的问题——没错,你的核心问题确实出在路径的写法和相对路径的指向上,结合XAMPP的目录结构和Windows系统的特性,咱们一步步来解决:
问题根源分析
- 路径分隔符错误:你代码里用了
..\upload,在PHP中Windows的反斜杠\是转义字符,这会导致路径被解析成错误的格式,PHP无法正确识别目标目录。 - 相对路径指向模糊:假设你的PHP脚本放在
C:\xampp\htdocs\PHP\下,../upload会指向C:\xampp\htdocs\upload,如果这个目录不存在、或者你实际想把文件传到PHP文件夹下的upload目录,那路径就完全错了。 - 路径拼接漏洞:你的代码里
$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
相关产品推荐
相关产品推荐

