尽管 php 中有 10M 设置,但无法上传大于 2MB 的图像.ini



我正在使用下一个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)中,10M被定义为"post_max_size"one_answers"upload_max_filesize"。

我也尝试过"ini_set()",但没有任何变化。

当我尝试上传一个大于2MB的文件时,它会不停地"上传"它。它从未完成,但似乎在尝试(浏览器的加载图标正在工作)。

我试着联系我的托管公司,他们说限制是10MB,而不是2。脚本来自w3schools:http://www.w3schools.com/php/php_file_upload.asp

我不明白我做错了什么。我想弄清楚这件事有一段时间了,但我现在真的需要你的帮助。

  • phpinfo()将两者都显示为10M,而不是2M
  • 没有任何与文件大小限制相关的.htaccess文件
  • PHP 5.4.27版

提前谢谢。

  1. 您是否查看了phpinfo()读数,以验证您对php.ini的更改是否真的有任何效果
  2. 您是否在每次修改php.ini时都重新启动Web服务器
  3. 请参阅php.net上的这些文档

http://www.php.net/manual/en/ini.core.php#ini.max-文件上传

http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes

在某些情况下,php中的文件上传限制大小也受到memory_limit设置的限制。也许将这个数字提高到1600万或更多会有所帮助?如果它还没有那么高。。

这里需要考虑一些事情。首先从ied3vil的建议开始,如果你仍然没有跑步,请回到这里。

我假设您使用的是apache,因为它是PHP的常见配置。您需要确定PHP的运行模式,并确保您正在编辑正确的php.ini文件。任何给定的服务器上,甚至任何给定的上下文根上,通常都有2个或多个php.ini文件。如果PHP配置被设置为允许递归重写,那么您可能在提供或引导的文件路径上的任何位置都有一个php.ini文件。

其次,PHP并不是体系结构中唯一可以限制文件上传大小的组件。Apache可以使用LimitRequestBody指令设置HTTP请求正文大小的限制,也可以在许多配置中设置为允许递归重写。。。在允许<Directory /path/to/dir>指令内部的重写,甚至允许在.htaccess文件中设置它之间。

查看ied3vil的答案后,如果你仍然没有工作,需要检查的事情:

  • 是正在编辑的相关主php.ini文件(apache php.ini文件或php5-config php.ini文件)。这将取决于您是否以cgi模式运行PHP
  • apache是否有任何设置指定允许的请求大小限制
  • 如果apache或php被配置为允许通过.htaccess、具有vhost定义的特定于目录的php.ini.conf文件来覆盖配置,那么您将希望沿着前面提到的文件上传设置的路径查找这些文件

相关内容

  • 没有找到相关文章

最新更新