繁体   English   中英

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

[英]Can't upload images larger than 2MB despite the 10M settings in php.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)中,为“ post_max_size”和“ upload_max_filesize”定义了10M。

我也尝试过“ ini_set()”,但没有任何改变。

当我尝试上传大于2MB的文件时,它会不停地“上传”它。 它永远不会完成,但是似乎可以尝试(浏览器的加载图标正在运行)。

我试图与托管公司联系,他们说限制是10MB而不是2MB。脚本来自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/zh/ini.core.php#ini.max-file-uploads

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

在某些情况下,php中的文件上传限制大小也受memory_limit设置限制。 也许将其提高到16Mb或更多会有所帮助? 如果不是那么高..

这里有几件事要考虑。 首先从ied3vil的建议开始,然后如果您仍然没有运行,请回到这里。

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

其次,PHP并不是体系结构中唯一可以限制文件上传大小的组件。 Apache可以使用LimitRequestBody指令设置对HTTP请求LimitRequestBody大小的限制,也可以将其设置为允许在多种配置中进行递归覆盖...之间允许在<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文件之类的配置来覆盖配置,则您将需要沿路径查找那些用于上述文件上传设置的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM