【发布时间】:2014-05-25 22:40:31
【问题描述】:
我正在使用下一个 PHP 代码在我的网站上上传图片:
<?php
if(isset($_POST['submit_form'])) {
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 1048576*10)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
}
?>
只要我上传最大 2MB 的文件,它就可以正常工作。 我在脚本中定义的限制是 10MB (1048576*10)。
在我的 php.ini 文件 (BlueHost) 中,为“post_max_size”和“upload_max_filesize”定义了 10M。
我也尝试了“ini_set()”,但没有任何改变。
当我尝试上传大于 2MB 的文件时,它会不停地“上传”它。它永远不会完成,但似乎它会尝试(浏览器的加载图标正在工作)。
我尝试联系我的托管公司,他们说限制是 10MB 而不是 2。脚本来自 w3schools: http://www.w3schools.com/php/php_file_upload.asp
我不明白我做错了什么。我正在尝试解决这个问题一段时间,但我现在真的需要你的帮助。
- phpinfo() 都显示为 10M,没有 2M。
- 没有任何与文件大小限制相关的 .htaccess 文件。
- PHP 版本 5.4.27
提前谢谢你。
【问题讨论】:
-
您选择文件后发送表格了吗?
-
您是否有任何 .htaccess 或 apache 配置覆盖将其设置为 2Mb? phpinfo() 说什么?你使用正确的 php.ini 吗?
-
抱歉,是的,我忘记在此处包含该代码部分;刚刚将表单提交脚本添加到我的问题中。
-
我浏览了在我的主机上可以找到的每个 .htaccess 文件,但我看不到任何与文件大小相关的可能会覆盖限制的内容。 phpinfo() 将所有内容显示为 10M,没有关于 2M。
-
检查 $_FILES["file"]["size"] 的值是否符合您的预期
标签: php html file upload limit