簡體   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