【发布时间】:2023-04-08 16:15:01
【问题描述】:
我在 RHEL 6.2、PHP 4.4.9 和 Apache 2.2.15 上运行,最近一次升级后,文件上传逻辑不再起作用。基本上,文件上传似乎上传成功(没有返回错误),但文件已损坏。文件类型可以是任意文件类型,上传文件的文件大小总是大于原始大小。我只是将源 .txt 文件与目标 .txt 进行了比较,目标文件包含
Content-Disposition: form-data; name="file"; filename="final.txt"
Content-Type: text/plain
在 .txt 文件中。基本上,它向目标文件添加了额外的文本。我不确定发生了什么。
我不确定是否需要在 php.ini 或 httpd.conf 中配置某些内容并出现此错误。任何帮助,将不胜感激。玛丽
下面是我尝试测试的代码:
<html>
<body>
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
// echo "Stored in: " . $_FILES["file"]["tmp_name"];
if (file_exists("/tmp/wangtest/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"/tmp/wangtest/" . $_FILES["file"]["name"]);
echo "Stored in: " . "/tmp/wangtest/" . $_FILES["file"]["name"];
}
}
?>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
【问题讨论】:
-
请格式化您的代码 Mary。在编辑器中,在每行之前放置 4 个空格以使其缩进并看起来像这里的代码。
-
添加了什么文字?无论如何它有关系吗?它可能是标题文本吗?
-
@Jeffman 我重新格式化了问题以使添加的文本脱颖而出。
-
代码没有问题(虽然我运行的是 5.5.2 - 4.4.9 是 ancient)。你升级了什么?
-
我升级了 Apache、PHP 和操作系统(现在升级到 RHEL 6.2)。我唯一可以比较的文件是 .txt 文件。我做了一个快速比较,发现上传的文件添加了“Content-Disposition: form-data; name="file"; filename="final.txt" Content-Type: text/plain" 然后开始复制第一个在文件的中间部分再次行。我读了一篇文章,有人提到 en_US 会有所帮助,但一切都是英文的。另一篇文章提到了之前的特殊 Unicode 字符