PHP多文件上传表单突发异常:首文件上传为0字节求助
文件上传故障排查求助
我有一个展示目录的网站,支持多文件上传到对应目录以方便访问重要文档。该功能正常运行约一年,上月突发故障。我确认未修改代码(多个目录均复制了相同PHP文件,不可能全部改动)。
故障现象:
- 单次上传1个文件时,上传失败,生成0字节空文件
- 批量上传时,首个文件上传为0字节失败,后续文件均可成功上传
我怀疑是服务商服务器环境变更或input type=file相关机制变化导致,已尝试以下操作但无改善:
- 更换多设备多浏览器测试(Chrome、Safari、Brave移动端)
- 调整目录权限为0755
- 禁用/启用
.htaccess
故障表现:首个上传文件显示0字节,第二个文件上传成功
相关代码
HTML部分
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload[]" id="fileToUpload" multiple="multiple"> <input type="submit" value="Upload" name="submit"> </form>
PHP部分
<?php $targetDir = __DIR__ . '/'; // 上传文件存储目录 if(isset($_POST["submit"])) { // 遍历每个上传文件 for ($i = 0; $i < count($_FILES["fileToUpload"]["name"]); $i++) { $targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"][$i]); // 获取上传文件名 // 检查文件是否已存在 if (file_exists($targetFile)) { echo '<script>alert("Sorry, the file '. basename($_FILES["fileToUpload"]["name"][$i]). ' already exists.");</script>'; continue; // 跳过当前循环,处理下一个文件 } // 检查文件大小(可选) if ($_FILES["fileToUpload"]["size"][$i] > 100000000) { // 根据需求调整文件大小限制 echo '<script>alert("Sorry, your file '. basename($_FILES["fileToUpload"]["name"][$i]). ' is too large.");</script>'; continue; // 跳过当前循环,处理下一个文件 } // 上传成功则将文件移动到目标目录 if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][$i], $targetFile)) { echo '<script>alert("The file '. basename($_FILES["fileToUpload"]["name"][$i]). ' has been uploaded.");</script>'; } else { echo '<script>alert("Sorry, there was an error uploading your file.");</script>'; } } // 重定向回上传页面 $redirectUrl = rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/list.php'; echo '<script>window.location.href = "'.$redirectUrl.'";</script>'; } ?>
我对服务器文件/设置调整了解有限,恳请协助排查问题。
内容的提问来源于stack exchange,提问作者user24337598
相关产品推荐
相关产品推荐

