2010-02-02 70 views
374

我有一個網站託管在PC上,我無權訪問。我有一個上傳表單,允許用戶上傳大小爲30MB的MP3文件。我的服務器端腳本是在PHP中完成的。更改上傳文件的最大大小

每當我嘗試上傳文件時,我收到一個錯誤,聲稱文件超出了允許的最大大小,所以我需要增加大小。我在網絡上的研究建議更改我無法訪問的.htaccess文件,這樣將無法工作。其他人建議我應該添加一個自定義的php.ini文件到我的根沒有工作。還有其他建議嗎?

回答

663

你需要設置的upload_max_filesizepost_max_size值在php.ini:

; Maximum allowed size for uploaded files. 
upload_max_filesize = 40M 

; Must be greater than or equal to upload_max_filesize 
post_max_size = 40M 

修改php.ini文件(一個或多個)後,需要重新啓動HTTP服務器以使用新的配置。

如果你不能改變你的php.ini,那你的運氣不好。您不能在運行時更改這些值;如果上傳的文件大於php.ini中指定的值,執行到達ini_set的呼叫時間將失敗。

查看Description of core php.ini directives

+2

你也許知道缺省路由的php.ini文件存儲? – 2010-02-02 14:07:48

+1

在Linux上,它通常位於/ etc/php /或其他行中。如果您在共享服務器上,除非您的託管服務提供商足夠慷慨地提供每個用戶的php.ini文件,否則您運氣不佳。 – 2010-02-02 14:10:42

+4

如果您在Windows下使用WAMP,您可以通過單擊WAMP圖標> PHP - > php.ini進行編輯。在Debian中,我的配置文件位於/ etc/php5/apache2中。 – meagar 2010-02-02 14:15:37

116

您可以通過.htaccess文件更改它。

.htaccess文件存儲在與您的.php文件相同的目錄中。他們修改該文件夾和所有子文件夾的配置。您只需通過在您選擇的目錄中創建一個.htaccess文件來使用它們(或者修改它,如果存在的話)。

以下內容應使您能夠提高上傳限制(如果服務器提供商允許通過.htaccess更改PHP配置)。

​​
+1

它似乎並不總是工作。在我的開發機器上,在.htaccess中設置適當的值完成了這項工作。但是,在共享主機上,此設置不起作用,但是錯誤消息顯示允許的最大上傳大小是我在.htaccess中設置的值。所以一個非常奇怪的情況發生。 – 2012-08-18 21:09:35

+3

看起來像在.htaccess中添加這個功能只有在運行Apache時纔有效。試試吧,對我來說工作得很好。 – AngelGris 2014-08-22 15:49:26

43

您還可以使用ini_set function(僅適用於PHP版本低於5.3):

ini_set('post_max_size', '64M'); 
ini_set('upload_max_filesize', '64M'); 

像@acme說,在PHP 5.3及以上這個設置是PHP_INI_PERDIR指令,因此它們不能被設置使用ini_set。您可以改用user.ini。

+28

在最近的PHP版本中,這些ini設置僅爲[PHP_INI_PERDIR](http://www.php.net/manual/en/ini.list.php),因此您無法在腳本中設置它們。有關更多詳細信息,請參見[這裏](http://www.php.net/manual/en/configuration.changes.modes.php)。 – acme 2013-03-06 08:40:24

30

我有同樣的問題,在過去..我固定它通過.htaccess文件

當您通過.htaccess就PHP CONFIGRATION變化,你應該把configrations在 IfModule標籤,其他的內部服務器錯誤會出現。

這是一個例子,它工作正常,我:

<IfModule mod_php5.c> 
    php_value upload_max_filesize 40M 
    php_value post_max_size 40M 
</IfModule> 

這是php全球化志願服務青年,如果你想了解更多。 http://php.net/manual/en/configuration.changes.php

+5

假設您擁有覆蓋功能。 – 2013-06-28 21:26:54

+0

爲了支持PHP.7,添加相同的塊: 2018-01-05 21:16:56

50

我有同樣的問題,我創建了一個.user.ini文件,並將其放在上載腳本所在的目錄中。比那個文件裏面我設置了這兩個值:

upload_max_filesize = 40M 

    post_max_size = 40M 

它對我很好!

+2

太棒了。與fastcgi一起使用也是如此。 [需要PHP5.3或更高版本。](http://php.net/manual/en/configuration.file.per-user.php) – Ciantic 2013-07-31 12:46:46

+1

好吧,這工作在共享服務器上,當沒有別的工作。很棒的發現。 – 2013-08-20 00:03:05

+0

這也解決了我的問題 - 謝謝! – 2017-12-31 10:51:37

36

要找到ini文件,第一次運行

php -i | grep -i "loaded configuration file" 

然後打開文件,更改

upload_max_filesize = 2M 
post_max_size = 2M 

你想要的尺寸更換2M,比如100M。

我有一個博客帖子大約有一點信息也http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini-file-for-wordpress

+2

它顯示文件爲'/ etc/php5/cli/php.ini',但我的配置文件是'/ etc/php5/apache2/php.ini'。某種誤導。 – 2016-07-14 06:53:34

+0

有2個php.ini文件...並且在回答中使用該命令時,它會顯示您正在使用哪一個!因此,您需要進行更改才能生效! – lewis4u 2017-07-06 15:26:19

1

這些解決方案的非對我的工作! (默認情況下已設置爲32M)。問題在大多數情況下爲max_allowed_packet

我正在使用localhost並使用MAMP

這裏是解決方案;

1.如果你沒有my.ini

添加

--max_allowed_packet=168435456 

...\MAMP\bin\startMysql.sh 

2.如果您的my.ini

[mysqld] 

添加

max_allowed_packet=100M 

DONE!

9

我創建一個名爲.user.ini在PHP文件腳本所在的目錄文件(這意味着該目錄中的任何PHP腳本將獲取新的文件大小限制)

.user.ini內容是解決這個問題:

upload_max_filesize = 40M 
post_max_size = 40M 
+0

這是我的解決方案。工作正常。如果你使用的是像codeignitor這樣的框架,「.user.ini」需要和index.php – 2015-12-03 03:51:33

+0

一樣。謝謝。這對我很有用。這對共享主機非常理想,因爲您無法訪問php.ini。我只是補充說它自PHP 5.3起可用 – yacsha 2017-09-26 02:42:41

3

那麼,我想在這裏添加我的2美分。

我使用共享虛擬主機,我多次解決了這個問題,試圖自行解決它,但無濟於事。 最後,我設法通過檢查各種網絡資源並聯系我的託管服務提供商來解決它。我的問題是「如何在共享虛擬主機中更改php值memory_limit?」,「我如何在共享虛擬主機中更改php值upload_max_filesize?」,「我如何在共享虛擬主機中更改php值max_input_vars?「,」我怎樣才能改變php值max_execution_time在共享虛擬主機? ,出現了最後,我聯繫我的託管服務提供商,並且事實證明,我在我的PHP設置爲本地人,他們改變了它到PHP 5.6,這裏是他們的答案:

「你的PHP被設置爲‘天然’模式,該模式意味着你不能覆蓋 這些值。我已經改變了你只是「5.6」,所以你要善於 去。」

之後我連接通過FTP FileZilla中我的網站,也不要忘了請爲FTP服務來顯示隱藏文件和本地計算機這樣做,因爲.htaccess文件隱藏在我的本地筆記本電腦和我的網站中,它在public_html文件夾中可用,我只是下載它並將以下代碼添加到文件末尾,然後將其上傳回服務器:

php_value memory_limit 256M 
php_value post_max_size 256M 
php_value upload_max_filesize 64M 
php_value max_input_vars 1800 
php_value max_execution_time 300 
php_value max_input_time 300 

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

一切都爲時間正常工作之中,如果有的話,你有一些問題解決,請寫在這裏,並警告我,讓我可以改變以上所示的代碼。順便說一下,我還上傳了一些顯示變化的圖片。

還有一件事我幾乎忘記提到ZipArchive在你的共享虛擬主機服務上的安裝,我管理了這個需求,只需通過我的cPanel進入php設置,點擊php選擇擴展,然後打勾zip部分,就是這樣。

謝謝。 PS:我接受良好的做法,如果你看到任何不好的做法,請讓我知道,我會嘗試改變它們。謝謝。

0

你需要檢查的三件事。

upload_max_filesizememory_limitpost_max_size完全在php.ini配置文件中。

所有這三個設置限制了PHP可以提交和處理的數據的最大大小。

通常post_max_sizememory_limit需要大於upload_max_filesize


所以三個變量你需要檢查有絕對的把握。

1

我有同樣的問題。我嘗試了三種通常建議的方式:

  1. 功能。PHP
  2. 的php.ini
  3. 的.htaccess

如果沒有這解決了我的問題。我使用GoDaddy的,並遇到了一個建議的解決方案是:

  1. 虛擬主機,然後管理
  2. 軟件選擇選擇PHP版本
  3. 選擇切換到PHP選項在字體顏色表格的右上角發現:藍色
  4. 在最下面的部分,你會發現升可能有的upload_max_filesize = 2M
  5. 現在,隨意改變它
  6. 請務必點擊保存按鈕!
  7. 現在到您的wp-管理面板中,選擇媒體然後添加

瞧!現在你有一個不同的最大上傳文件大小:)

0

也許這應該是@ seanb123和@Fredrick高斯評論他的評論評論,但對我來說在Drupal 8.1我需要修改在這裏找到該文件:

/etc/php/7.0/apache2/php.ini 

我可能改裝成其他四個的php.ini文件,包括一個我的系統稱爲「加載的配置文件」(PHP -i | grep的-i「加載配置文件」)和一個在信息發現.php頁面,但沒有一個幫助。我在2012年的一個網站上發現了正確的路徑,它表示路徑已被廢棄,甚至是BACK THEN。當然,對於PHP7來說,它與當時所說的有點不同:/etc/php5/apache2/php.ini,但概念是一樣的。

也許這會幫助一些像我這樣的無助schmuck。

這就是說,在我的情況下對OP的答案將是有人在框上的管理員權限將不得不這樣做。

,幫助我的網站:我注意到,現場機智共同主辦不允許在php.ini文件中更改設置Import file size limit in PHPMyAdmin