[英]Change the maximum upload file size
我有一個網站托管在我無法訪問的 PC 上。 我有一個上傳表單,允許人們上傳最大 30MB 的 mp3 文件。 我的服務器端腳本是在 PHP 完成的。
每次我嘗試上傳文件時,我都會收到一條錯誤消息,聲稱文件超出了允許的最大大小,因此我需要增加大小。 我對 web 的研究建議更改我無權訪問的.htaccess
文件,這樣就不起作用了。 其他人建議我應該將自定義php.ini
文件添加到我的根目錄,但沒有用。 還有其他建議嗎?
您需要在php.ini
中設置upload_max_filesize
和post_max_size
的值:
; 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
,那你就不走運了。 您不能在運行時更改這些值; 在執行到達您對ini_set
的調用時,上傳大於php.ini
中指定值的文件將失敗。
請參閱核心php.ini
指令的說明。
您可以通過.htaccess
文件對其進行更改。
.htaccess
文件存儲在與.php
文件相同的目錄中。 他們修改該文件夾和所有子文件夾的配置。 您只需通過在您選擇的目錄中創建一個.htaccess
文件來使用它們(或修改它,如果存在)。
以下應該使您能夠增加上傳限制(如果服務器提供商允許通過.htaccess
更改 PHP 配置)。
php_value upload_max_filesize 40M
php_value post_max_size 42M
我遇到了同樣的問題,我創建了一個 .user.ini 文件並將其放在上傳腳本所在的目錄中。 比在那個文件里面我設置了這兩個值:
upload_max_filesize = 40M
post_max_size = 40M
它對我很有用!
您還可以使用ini_set 函數(僅適用於 5.3 以下的 PHP 版本):
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
就像@acme 所說,在 php 5.3 及更高版本中,此設置是 PHP_INI_PERDIR 指令,因此無法使用 ini_set 設置它們。 您可以改用 user.ini。
要找到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-文件換wordpress
我過去有同樣的問題..我通過.htaccess
文件修復了它
當您通過.htaccess
對 php 配置進行更改時,您應該將配置放在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
我通過在 PHP 文件腳本所在的目錄中創建一個名為.user.ini
的文件解決了這個問題(這意味着該目錄中的任何 PHP 腳本都會獲得新的文件大小限制)
.user.ini
的內容是:
upload_max_filesize = 40M
post_max_size = 40M
答案有點不完整,你必須做的 3 件事
在您的 php 安裝的 php.ini 中(注意:取決於您是否希望它用於 CLI、apache 或 nginx,找到要操作的正確 php.ini。對於 nginx,它通常位於/etc/php/7.1/fpm
中 7.1取決於你的版本。對於 apache 通常是/etc/php/7.1/apache2
)
post_max_size=500M
upload_max_filesize=500M
memory_limit=900M
或設置其他值。 如果您安裝了 apache,則重新啟動/重新加載 apache;如果您使用 nginx,則為 nginx 重新啟動/重新加載php-fpm 。
很多時候我注意到共享主機的站點不允許更改 php.ini 文件中的設置。 甚至根本無法創建 .htaaccess 文件。 在這種情況下,可以嘗試以下事情
ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
也許這應該是對@seanb123 和@Fredrick Gauss 評論他的評論的評論,但對我來說,在使用 PHP 7 的 Drupal 8.1 中,我需要修改的文件位於此處:
/etc/php/7.0/apache2/php.ini
我修改了其他四個 php.ini 文件,包括我的系統稱為“加載的配置文件”( php -i | grep -i "loaded configuration file"
)的一個,以及在 info.php 頁面上找到的一個,但沒有一個幫助。 發現正確路徑的關鍵是在 2012 年的一個站點上找到的。他們說路徑"/etc/php5/apache2/php.ini"
甚至在那時就已被棄用,但它給了我一個線索,在哪里可以找到它。 對於 PHP7,它與 PHP5 略有不同,但概念是相同的。
也許這會幫助一些像我這樣無助的笨蛋。
話雖如此,在我的情況下,對 OP 的回答是必須由具有管理員權限的人來執行此操作。
幫助我的網站: http ://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/
這也在這里解決: PHPMyAdmin 中的導入文件大小限制
編輯:我給自己的筆記全文:
要更改最大上傳大小,請編輯 /etc/php/7.0/apache2/php.ini 中的 upload_max_filesize 和 [如果需要?] post_max_size (或舊版本: /etc/php5/apache2/php.ini )
/etc/init.d/apache2 重啟
再次編輯:由於您要導入大文件,您可能需要更改處理它們的超時時間。 在我的例子中,名為“config.default.php”的文件位於/usr/share/phpmyadmin/libraries/config.default.php
中,變量$cfg['ExecTimeLimit'] = 300;
例如,我將我的更改為 900 以進行大量導入。 之后你需要重啟apache
我有同樣的問題。 我嘗試了通常建議的三種方法:
如果解決了我的問題,則沒有。 我正在使用 godaddy 並遇到了一個建議的解決方案:
upload_max_filesize = 2M
瞧! 現在你有一個不同的最大上傳文件大小:)
好吧,我想在這里加我的 2 美分。
我正在使用共享虛擬主機,我多次解決這個問題,試圖自己解決,但無濟於事。 最后,我設法通過檢查各種網絡資源並聯系我的托管服務提供商來解決它。 我的問題是“如何更改共享虛擬主機中的 php 值memory_limit
?”,“如何更改共享虛擬主機中的 php 值upload_max_filesize
?”,“如何更改共享虛擬主機中的 php 值max_input_vars
?”,“如何更改共享虛擬主機中的 php 值max_execution_time
?", "如何更改共享虛擬主機中的 php 值max_input_time
?" 以及更多通過配置或更改 php.ini 或.htaccess
文件。 我試圖改變它們,但出現了問題。 最后我聯系了我的托管服務提供商,結果發現我將我的 php 設置為 native,他們將其更改為 php 5.6,這是他們的答案:
“你的 PHP 被設置為‘native’模式,這意味着你不能覆蓋這些值。我已經把你改成了‘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
暫時一切正常,如果你們中的任何人克服了一些問題,請寫在這里並警告我,以便我可以更改上面顯示的代碼。 順便說一句,我還上傳了一些顯示變化的圖片。
還有一件事我差點忘了在您的共享虛擬主機服務上安裝 ZipArchive,我只需通過我的 cpanel 進入 php 設置,單擊 php 選擇器擴展,然后勾選 zip 部分,就可以滿足該要求。
謝謝。
PS:我對好的做法持開放態度,如果你在這里看到任何不好的做法,請告訴我,我會嘗試改變它們。 謝謝。
這些解決方案都不適合我!! (已經默認設置為 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
完畢!
由於全局更改有點冒險,我試圖增加單個腳本big_file_upload.php
的最大上傳值。 由於某種原因ini_set
沒有幫助。 經過一番研究,我想出了這個。 將其放入.htaccess
中(除非通過AccessFileName
更改名稱)
<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>
為我工作。
您需要檢查的三件事。
upload_max_filesize
, memory_limit
和post_max_size
在 php.ini 配置文件中。
所有這三個設置都限制了 PHP 可以提交和處理的最大數據大小。
通常post_max_size
和memory_limit
需要大於upload_max_filesize
。
因此,您需要檢查三個變量以絕對確定。
如果您編輯了正確的 php.ini 文件,重新啟動了 Apache 或 Nginx,但仍然無法正常工作,那么您也必須重新啟動php-fpm :
sudo service php-fpm restart
我也有這個問題,並通過在/etc/nginx/nginx.conf
中設置此設置來修復它
client_max_body_size 0;
0,如無限。
而且,如果你有一個使用 nginx 運行的反向代理,那么該服務器也應該有這個設置(這就是讓我失望的原因)
現有的答案都有部分解決方案,所以這里是編譯的答案:
解決方案 1:編輯 .htaccess 文件適用於 Apache 服務器
php_value upload_max_filesize 128M
php_value post_max_size 132M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300
解決方案 2:編輯適用於 Wordpress 應用程序的 wp-config.php 文件
@ini_set( 'upload_max_filesize' , '128M' );
@ini_set( 'post_max_size', '132M');
@ini_set( 'memory_limit', '256M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );
解決方案3:編輯php.ini文件適用於nginx服務器或php.ini可修改的地方
upload_max_filesize = 128M
post_max_size = 132M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
可選:Nginx 服務器
對於 nginx,通過添加client_max_body_size 128M;
http
或server
塊中的指令。]
最后不要忘記重新啟動服務器。 在下面申請適合您的內容:
# if php-fpm is used for processing php
sudo service php7.4-fpm restart
# for nginx
sudo service nginx restart
# for apache
sudo service httpd restart
打開 php.ini 文件。
在 php.ini 中搜索諸如 upload_max_filesize 之類的關鍵字。
然后更改文件的大小。
upload_max_filesize = 400M
需要更改最大帖子值。
post_max_size = 400M
花了幾個小時后,我幾乎瀏覽了所有帖子,但沒有運氣。 最后通過這些步驟解決了問題。 這可能是奇怪的解決方案,但對我有用。
第1步:在/etc文件夾或/文件夾中找到php.ini文件,在cmd下運行:
grep -rl "post_max_size" | xargs ls -lrth
這里我使用 post_max_size 關鍵字在 /etc 文件夾中搜索“php.ini”文件,但在某些系統中,您可以在 /var/www/html 或 /var/www/wordpress 文件夾中找到它。
我們在互聯網上有多個帖子,好像 WordPress 文件夾中不存在 php.ini 文件,那么您可以創建,但在我的情況下這不起作用。
第2步:
編輯 php.ini 文件並像這樣更改值。
post_max_size = 100M
upload_max_filesize = 100M
在上面,您可以根據需要設置任何值。
第 3 步:
重新啟動 httpd 或 Nginx 或 apache 和 PHP 服務,或者按照設置,您可以重新啟動 Web 服務。
對我來說 httpd 和 php-fpm 服務重啟在 centos 8 中工作:
service httpd restart
service php-fpm restart
您必須找到安裝 php 的位置,您將看到php.ini文件
只需在任何編輯器中打開該文件並替換該值
max_file_upload : 2M
第一個選項:如果您有權編輯 php.ini 文件,請使用此選項。
需要更改php.ini中的upload_max_filesize和post_max_size設置以支持大於 php 默認允許大小的文件。
將upload_max_filesize設置為需要上傳的文件的最大大小。
post_max_size應設置為大於upload_max_filesize以處理文件和文件上傳表單的表單post 變量部分的大小。 如果一次在文件上傳表單中上傳多個文件, post_max_size應設置為(upload_max_filesize * 文件數)+ post 變量的大小。
upload_max_filesize=30M
post_max_size=31M
無需更新memory_limit和max_execution_time php 設置,以防文件只是使用 move_uploaded_file 移動到文件上傳 php 腳本中的最終路徑。 但是,如果文件上傳腳本正在處理文件或將文件讀取到變量或執行任何其他使用內存和時間等的處理,則應設置memory_limit和max_execution_time 。
將memory_limit設置為 php 腳本運行所需的內存量,將max_execution_time設置為運行腳本所需的時間(以秒為單位)。
memory_limit = 100M
max_execution_time = 120
更改 php.ini 后重啟網絡服務器使其生效。
第二個選項:如果您無權更新全局 php.ini 設置或提高安全性,請使用此選項。
將上傳的 php 腳本復制到一個新的子文件夾,比如“上傳”並在新文件夾中創建一個文件“.user.ini”。 還要確保更新文件上傳表單操作屬性以發布到“上傳”文件夾下的新腳本。
將以下設置添加到新創建的文件中。 “.user.ini”。
upload_max_filesize=30M
post_max_size=31M
;below are optional
memory_limit = 100M
max_execution_time = 120
"user_ini.filename" php.ini 設置可以更新為用戶設置文件另一個名稱。
此選項提高了安全性,因為僅針對新文件夾中的腳本更改了upload_max_filesize、post_max_size、memory_limit、max_execution_time,並且不會影響其他文件夾中腳本的 php 設置,並防止不良腳本使用任何不必要的資源。
有關“.user.ini”設置的更多信息,請參閱以下鏈接
https://www.php.net/manual/en/configuration.changes.modes.php
https://www.php.net/manual/en/ini.list.php
https://www.php.net/manual/en/configuration.file.per-user.php
重新啟動網絡服務器以使新的 .user.ini 更改生效。
筆記:
也可以使用ini_set和set_time_limit函數在 php 上傳腳本中設置memory_limit和max_execution_time設置,而不是更新 php.ini 文件。
如果使用此選項,則無需更新 ini 文件中的memory_limit和max_execution_time設置。
將下面添加到 php 文件上傳腳本的頂部
ini_set('memory_limit', '100M');
set_time_limit(120);
我知道這個問題有很多答案,但在php.ini
中,大多數以下變量僅對更改最大上傳文件大小有用
由於有時用戶更新了最大文件大小但沒有更新 memory 限制,因此導致導入過程中斷。
所以在這里我列出了所有需要更改的相關變量以及最大文件大小
注意:從現在開始,ini 存儲在類似這樣的文件夾中
/etc/php/8.1/apache2/php.ini
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.