如何修改WordPress最大上傳檔案大小限制

修改WordPress最大上傳限制

較低的WordPress上傳限制可阻止您上傳大檔案,外掛和主題。如果您要建立一個擁有大量多媒體資源的網站,那這將是一個很大的障礙。在這種情況下,有必要增加WordPress或伺服器(或兩者)中的最大上傳大小。

也經常在WordPress交流群裡看到站長諮詢關於WordPress上傳檔案大小限制的問題,因此,我們有必要針對WordPress上傳大小限制話題撰寫一篇文章,以解眾惑。

根據不同的伺服器託管提供商和伺服器,有很多方法可以解決此問題。我們將在本教程中儘可能全面地介紹設定WordPress最大上傳大小限制。

WordPress最大上傳限制是多少?

將大檔案上傳到伺服器會消耗大量伺服器資源。為了防止使用者因上傳檔案造成伺服器超時,WordPress預設的最大上傳大小通常為4 MB128 MB。通常,伺服器託管提供商或者伺服器軟體在伺服器級別設定此限制。

WordPress還包含定義此限制的常量,但在大多數情況下它們不能覆蓋伺服器級別的設定。

伺服器預設最大上傳檔案大小,不同的伺服器提供商有不同的設定,一般不會超過128MB。

要驗證這一點,請轉到WordPress網站的“媒體庫”。在這裡,嘗試上傳超出此最大上傳檔案大小限制的檔案。您會看到一條類似以下內容的錯誤訊息:

WordPress最大上傳限制

在WordPress中上傳大檔案時出錯

“超過了站點的最大上傳限制”主要有兩個原因:安全性和效率。這會阻止站點所有者和其他使用者(包括惡意行為者)上傳大檔案(例如,高解析度影象,大視訊)。

否則,可能導致網站伺服器無法使用,從而使網站無法正常執行。更糟糕的是,它可能會使網站徹底癱瘓!

如何檢查WordPress當前的最大上傳限制

有很多方法可以檢查您的WordPress網站當前的最大上傳限制,具體如下。

在媒體庫中

檢查網站當前最大上傳限制的最便捷的方法是轉到WordPress儀表盤,然後從此處轉到媒體>媒體庫。點選新增新檔案按鈕以啟用媒體上傳工具。

WordPress最大上傳檔案大小

WordPress最大上傳檔案大小

國外部分伺服器託管站點時,最大上傳檔案大小訊息將顯示在“選擇檔案”按鈕下方。如果您使用其他網路託管服務提供商,則可能會在此處看到其他限制。

您也可以直接轉到媒體>新增新內容,並在底部看到相同的訊息。

WordPress媒體庫最大上傳檔案大小

WordPress媒體庫中的“最大上傳檔案大小”

同樣,您可以在此處看到最大128 MB的上傳檔案大小。

在站點健康資訊中

WordPress 5.2新增了Site Health Info工具,以幫助您更好地除錯WordPress網站。在這裡,您幾乎可以找到有關伺服器和WordPress配置的所有資訊。

由於伺服器和WordPress都設定最大上傳檔案大小,在此介面上有兩種方法可以找到最大上傳檔案大小值。

首先,您可以在“媒體處理”下拉選單中找到“最大單一上傳檔案大小”的值。

站點健康資訊面板媒體處理設定

“站點健康”資訊面板中的媒體處理設定

第二種方法是在“伺服器”下拉選單可以看到與您的網站伺服器設定相關的資訊。找到“上傳最大檔案大小”的對應值,即你的WordPress的最大上傳限制。下面截圖的演示站點的最大上傳檔案大小限制為128 MB

“站點健康”資訊面板中的伺服器設定

“站點健康”資訊面板中的伺服器設定

您還可以檢視其他PHP常量及其值,例如:

  • PHP post max size定義POST請求的最大上傳限制。
  • PHP memory limit定義為PHP分配的記憶體。應將其設定為等於或大於最大上傳限制。否則,上傳將失敗。

一般情況下配置越低的虛擬主機,這些選項所設定的值越小。這也是為什麼小編常常建議站長儘可能選購VPS作為WordPress網站的伺服器,因為允許站長自行配置這些選項的值。

為什麼增加WordPress最大上傳限制?

有許多原因可能導致您需要增加WordPress網站的最大上傳檔案大小,最常見的原因有:

  • 通過WordPress管理儀表盤安裝大型主題或外掛。
  • 定期更新WordPress網站內容以保持讀者參與度並獲得更多回報。這包括定期上傳新影象,視訊,音訊和其他媒體。但是,當您的上傳檔案有大小限制時,這並不總是可行的。
  • 上傳大型視訊或影象作為網站的背景或Header。
  • 直接從站點出售數字檔案,例如電子書,照片,視訊,主題和外掛。有時,這些檔案高達數百兆位元組(或更多)。

上面我們瞭解了WordPress最大上傳檔案大小的基礎知識,下面讓我們一起深入瞭解如何修改最大上傳限制值。

增加WordPress最大上傳檔案大小的10種方法

我們可以通過多種方法來解決WordPress的最大上傳大小問題,下面十種方法將由淺及深,或者由簡單到複雜排列。

  1. 聯絡伺服器託管提供商以獲取幫助
  2. 在WordPress多站點中增加最大上傳檔案大小
  3. 更新 “.htaccess” 檔案
  4. 建立或修改 “php.ini” 檔案
  5. 建立或修改 “.user.ini” 檔案
  6. 通過cPanel更改PHP選項
  7. 在Nginx中增加最大上傳檔案大小
  8. 使用WordPress的 “upload_size_limit” 過濾器
  9. 使用WordPress外掛
  10. 通過FTP/SFTP上傳檔案

聯絡伺服器託管提供商以獲取幫助

如果您在上傳檔案檔案大小限制方面遇到問題,請聯絡伺服器託管提供商以尋求幫助,這是最快的解決方案之一。增加上傳限制是一項技術支援的瑣碎任務,因此大多數託管公司可以幫助您快速解決此問題。

修改伺服器或站點配置檔案對於不熟悉伺服器配置的人們來說始終是一項艱鉅的任務。因此,我們建議您首先嚐試此方法。

注:一般虛擬主機,如需要修改WordPress最大上傳限制值,可能甚至必須通過聯絡伺服器提供商技術客服來修改。

在WordPress多站點中增加最大上傳檔案大小

如果您正在執行WordPress Multisite網路,則可以修改網路的最大上傳檔案大小。

首先,轉到“網路管理”儀表板,然後轉到“設定”>“網路設定”螢幕。在此處向下滾動,直到找到“上傳設定”部分,您將會找到 Max upload file size 欄位。

“網路設定”中的“最大上傳檔案大小”欄位

“網路設定”中的“最大上傳檔案大小”欄位

WordPress Multisite中的最大上傳檔案大小的預設值為1500 KB(〜1.5 MB)。您可以將其更改為更高的值,然後單擊“儲存更改”按鈕。

注:您不能從此處規避伺服器級別的最大上傳大小限制。如果您在此處設定的限制高於伺服器的最大上傳大小限制,則伺服器將忽略它。您可以使用上述方法來查詢Web伺服器的配置。

“網路設定”中新的“最大上傳檔案大小”

“網路設定”中新的“最大上傳檔案大小”

本次演示,我們將新的最大上傳檔案大小設定為131072 KB〜128 MB)。

您還可以限制上傳到多站點網路中單個站點的檔案的總大小。一般預設情況下它是禁用的。

更新 “.htaccess” 檔案

如果您的網站伺服器在Apache上執行,則可以更新站點的.htaccess檔案以增加WordPress最大上傳大小。您可以在WordPress網站的根目錄中找到.htaccess檔案。

根據PHP文件,三個PHP指令負責WordPress處理上傳的方式,分別是:

  • upload_max_filesize
  • post_max_size
  • memory_limit

在上面的“站點健康資訊”部分中討論了它們。如果您修改了這三個指令的值以接納您的檔案大小,將會有所幫助。例如,如果您計劃上傳的最大檔案是32 MB,我們建議您進行以下設定:

  • upload_max_filesize = 32M
  • post_max_size = 64M
  • memory_limit = 128M

注意,所有值都使用M而不是MB。這就是PHP處理其指令的方式。

上傳檔案除了檔案本身之外,還可以包含其他資訊。因此,為所有其他與上傳相關的指令提供一些預留的空間是個好主意。您可以閱讀“如何解決WordPress記憶體限制錯誤(2種方法)”教程以獲取更多資訊。

通過FTP/SFTP或伺服器提供商的檔案管理器訪問.htaccess檔案。

如何修改WordPress最大上傳檔案大小限制-1

查詢“ .htaccess”檔案

使用文字編輯器或程式碼編輯器開啟 .htaccess檔案,然後新增以下程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300
php_value upload_max_filesize 32M php_value post_max_size 64M php_value memory_limit 128M php_value max_execution_time 300 php_value max_input_time 300
php_value upload_max_filesize 32M 
php_value post_max_size 64M 
php_value memory_limit 128M 
php_value max_execution_time 300 
php_value max_input_time 300

您可以在上面的程式碼中注意到另外兩個PHP指令:max_execution_timemax_input_time。它們定義伺服器在一個PHP任務上花費的時間。您上傳的內容越大,花費的時間就越大。您需要將它們的值設定為適合您的用例的數字。

注:使用上述方法後,您可能會收到500 Internal Server Error。這很可能是因為您的伺服器正在CGI模式下執行PHP。在這種情況下,您不能在.htaccess檔案中使用以上命令。

建立或修改 “php.ini” 檔案

php.ini檔案中,您可以定義對預設PHP設定的更改。通常,它包含定義檔案超時,最大上傳大小和資源限制的指令。

使用SSH或FTP,您可以在WordPress根目錄中找到php.ini檔案。在某些情況下,您可能無法在此處找到它。不用擔心!您可以在站點的根目錄中建立一個具有相同名稱的新檔案。

建立一個新的php.ini檔案

建立一個新的php.ini檔案

使用程式碼或文字編輯器,將以下程式碼新增到現有或新的php.ini檔案中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
upload_max_filesize = 32M
post_max_size = 64M
memory_limit = 128M
upload_max_filesize = 32M post_max_size = 64M memory_limit = 128M
upload_max_filesize = 32M 
post_max_size = 64M 
memory_limit = 128M

進行更改後,請不要忘記儲存檔案。某些主機不允許您通過此方法修改PHP設定。在這種情況下,您可以繼續嘗試以下解決方案。

建立或修改 “.user.ini” 檔案

如果伺服器託管服務提供商已鎖定了全域性PHP設定,則他們可能已將伺服器配置為使用.user.ini檔案而不是php.ini檔案。

php.ini.htaccess檔案一樣,您可以在網站的根目錄中找到.user.ini。如果找不到,則可以在同一位置建立一個新的.user.ini檔案。按照前面方法中描述的相同過程建立一個新的 php.ini檔案。

接下來,將以下程式碼新增到您的.user.ini檔案中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
upload_max_filesize = 32M
post_max_size = 64M
memory_limit = 128M
upload_max_filesize = 32M post_max_size = 64M memory_limit = 128M
upload_max_filesize = 32M 
post_max_size = 64M 
memory_limit = 128M

有沒有發現,這只是重複了前面的方法,只是檔名不同。

通過cPanel更改PHP選項

如果伺服器託管提供商使用cPanel控制面板來幫助您管理伺服器和站點配置,則可以通過其介面更改最大上傳檔案的大小。

首先,請轉到cPanel儀表盤,然後在“Software部分下選擇“Select PHP Version” 。

cPanel儀表盤-“選擇PHP版本”

cPanel儀表盤-“選擇PHP版本”

在這裡,您可以更改伺服器當前PHP版本並啟用/禁用許多PHP擴充套件。單擊導航選單中的“Options連結以轉到“PHP Options面板。

轉到cPanel中的“ PHP Options”設定

轉到cPanel中的“ PHP Options”設定

向下滾動這裡修改PHP指令,如值upload_max_filesizepost_max_sizememory_limitmax_execution_time,和max_input_time,您可以在此處可設定的最大值取決於您當前的伺服器配置。

cPanel中的“ PHP選項”

cPanel中的“ PHP選項”

如果您對這些值有任何疑問,建議您與託管服務提供商聯絡。最新的cPanel儀表盤會自動儲存更改。但是,如果您使用的是較早的cPanel版本,請確保點選儲存按鈕以儲存更改。

在Nginx中增加最大上傳檔案大小

Nginx是另一個類似於Apache的網路伺服器,但它還有很多其他功能。通常,Nginx可以比Apache處理更多的併發請求,從而使其更快。閃電博也是使用Nginx解決方案。

如果您在Nginx上執行WordPress網站,則需要同時修改php.ininginx.conf檔案。我們之前已經處理過前一個檔案。後者稱為Nginx配置檔案。

在Nginx伺服器上,您可以在找到php.ini檔案/etc/php/7.4/fpm/php.ini。根據您安裝的PHP版本,路徑可能會略有不同。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
upload_max_filesize = 64M
post_max_size = 128M
upload_max_filesize = 64M post_max_size = 128M
upload_max_filesize = 64M 
post_max_size = 128M

您無需在上面的檔案設定memory_limit,因為Nginx對它的處理方式有所不同。有關更多資訊,您可以檢視Stack Overflow這篇文章。儲存php.ini檔案後,去終端重新啟動PHP-FPM,以啟用更改:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service php7.4-fpm restart
sudo service php7.4-fpm restart
sudo service php7.4-fpm restart

同樣,重啟PHP的指令程式碼可能會略有不同,具體取決於伺服器上安裝的PHP版本。

接下來,使用Nginx的client_max_body_size指令設定新的最大上傳大小限制。您需要在nginx.conf檔案中宣告此指令,您可以在/etc/nginx/nginx.conf找到該檔案。

您可以在http {...}塊,server {...}塊或location {...}塊中宣告此指令。

http塊中進行設定會影響此伺服器上託管的所有網站/應用。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
http {
...
client_max_body_size 128M;
}
http { ... client_max_body_size 128M; }
http { 
... 
client_max_body_size 128M; 
}

server塊中定義它只會影響此伺服器託管的特定站點/應用程式。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
server {
...
client_max_body_size 128M;
}
server { ... client_max_body_size 128M; }
server { 
... 
client_max_body_size 128M; 
}

location塊定義則僅影響指定的目錄(如檔案上傳目錄)。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
location /files {
...
client_max_body_size 128M;
}
location /files { ... client_max_body_size 128M; }
location /files { 
... 
client_max_body_size 128M; 
}

不要忘記儲存檔案並重新啟動Nginx以應用更改,您可以在終端中使用以下命令重啟NG:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service nginx reload
sudo service nginx reload
sudo service nginx reload

部分伺服器提供商不允許客戶直接訪問Nginx配置。但是,可以與支援團隊聯絡更改。

使用WordPress的 “upload_size_limit” 過濾器

WordPress 2.5引入了upload_size_limit過濾器,該過濾器過濾php.ini中允許的最大上傳大小。甚至WordPress都使用此過濾器來顯示允許的最大上傳大小,例如在“媒體庫”和“站點健康資訊”介面中。

以下是WordPress貢獻者Drew Jaynes實際使用的此過濾器的示例。它定義了所有非管理員角色的上傳大小限制。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* Filter the upload size limit for non-administrators.
*
* @param string $size Upload size limit (in bytes).
* @return int (maybe) Filtered size limit.
*/
function filter_site_upload_size_limit( $size ) {
// Set the upload size limit to 10 MB for users lacking the 'manage_options' capability.
if ( ! current_user_can( 'manage_options' ) ) {
// 10 MB.
$size = 1024 * 10000;
}
return $size;
}
add_filter( 'upload_size_limit', 'filter_site_upload_size_limit', 20 );
/** * Filter the upload size limit for non-administrators. * * @param string $size Upload size limit (in bytes). * @return int (maybe) Filtered size limit. */ function filter_site_upload_size_limit( $size ) { // Set the upload size limit to 10 MB for users lacking the 'manage_options' capability. if ( ! current_user_can( 'manage_options' ) ) { // 10 MB. $size = 1024 * 10000; } return $size; } add_filter( 'upload_size_limit', 'filter_site_upload_size_limit', 20 );
/**
* Filter the upload size limit for non-administrators.
*
* @param string $size Upload size limit (in bytes).
* @return int (maybe) Filtered size limit.
*/
function filter_site_upload_size_limit( $size ) {
// Set the upload size limit to 10 MB for users lacking the 'manage_options' capability.
if ( ! current_user_can( 'manage_options' ) ) {
// 10 MB.
$size = 1024 * 10000;
}
return $size;
}
add_filter( 'upload_size_limit', 'filter_site_upload_size_limit', 20 );

上面的程式碼使用WordPress的 manage_options 功能僅針對非管理員設定此限制。您可以修改程式碼以定位特定的使用者角色或使用者ID。

使用WordPress外掛

並非所有人都喜歡使用SSH或FTP/SFTP來處理程式碼。如果您不習慣編寫或編輯程式碼,則可以改用WordPress外掛。

WP Maximum Upload File Size外掛

WP Maximum Upload File Size外掛

我們將在此處使用WP Maximum Upload File Size外掛。撰寫本文時,它是WordPress外掛市場中唯一可幫助您完成此操作的最新外掛。

首先,請安裝並啟用WP Maximum Upload File Size外掛。點選WordPress管理後臺左側選單的“Wp upload limit”,在這裡,您可以看到託管提供商和WordPress設定的最大上傳檔案大小。

WP最大上傳檔案大小設定

WP最大上傳檔案大小設定

在這裡,您可以看到WordPress設定的最大上傳檔案大小小於託管服務提供商設定的最大檔案大小。因此,您可以通過選擇最大上傳檔案大小並顯示下拉選單來設定更大的上傳限制。

注:如果您要設定的最大上傳檔案大小上限大於託管服務提供商設定的上限,則無法通過此外掛進行操作。為此,您需要聯絡您的託管服務提供商。

通過FTP/SFTP上傳檔案

不想使用上述所有方法?您還可以通過FTP/SFTP上傳大檔案。

使用SFTP上傳檔案到伺服器

使用SFTP上傳檔案到伺服器

如果要上傳大量檔案,這是最快的方法。

有時,WordPress無法識別通過FTP/SFTP上傳的檔案。在這種情況下,您可以使用免費外掛- Add From Server將上傳的檔案匯入WordPress。

或者,您可以通過使用WP-CLI匯入影象,從命令列直接執行相同操作。wp media import命令允許您從本地檔案或URL建立附件。

不要編輯 “wp-config.php” 檔案

編輯wp-config.php檔案不再起作用。之所以在這裡提及它是因為我們發現許多網上教程都將其列為修改WordPress最大上傳限制的合法方法。

該方法是通過FTP/SFTP或SSH進入站點的根目錄,然後編輯wp-config.php檔案。

查詢wp-config.php檔案

查詢wp-config.php檔案

建議您將以下程式碼新增到wp-config.php檔案中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '128M');
@ini_set( 'memory_limit', '256M' );
@ini_set( 'upload_max_size' , '64M' ); @ini_set( 'post_max_size', '128M'); @ini_set( 'memory_limit', '256M' );
@ini_set( 'upload_max_size' , '64M' ); 
@ini_set( 'post_max_size', '128M'); 
@ini_set( 'memory_limit', '256M' );

它無法工作,因為您只能使用 ini_set() function來設定屬於PHP_INI_ALL可變模式的PHP指令。

upload_max_sizepost_max_size作為屬於PHP_INI_PERDIR多變的模式。您只能通過php.ini.htaccesshttp.conf.user.ini進行設定。

如果您以前嘗試過此方法而沒有看到任何結果,那麼現在您知道它為什麼會失敗。

驗證WordPress網站的新的最大上傳限制

最後,我們需要驗證WordPress網站中是否實現了新的最大上傳檔案大小限制。為此,請按照上面討論的相同步驟檢查WordPress中的最大上傳檔案大小。

轉到WordPress資訊中心中的媒體庫,然後檢查最大上傳檔案大小限制是否已更改。

驗證“媒體庫”中新的最大上傳檔案大小

驗證“媒體庫”中新的最大上傳檔案大小

是的,它已經改變了。那是成功的!

您也可以轉到“站點健康”面板,然後在“媒體處理”和“伺服器”下拉選單中檢查是否相同。

媒體處理最大上傳檔案大小

在“站點健康資訊>媒體庫”中驗證新的最大上傳檔案大小

伺服器最大上傳檔案大小

在“站點執行>狀況資訊>伺服器”中驗證新的最大上傳檔案大小

小結

如您所見,在WordPress中修改最大上傳限制並不是太複雜。無論您是要構建大量媒體作品集網站還是要安裝大型主題,只需知道要在哪裡查詢以及要使用哪些命令或工具即可。

在大多數情況下,與您的託管服務提供商聯絡就足夠了。但是,如果您遇到麻煩的主機,我們將向您展示一些替代方法,您可以在遷移到更好的主機之前嘗試一下。

上述有沒有涵蓋了所有你所需要的內容嗎?您是否也曾經遇到了上載檔案大小限制的情況,然後你是如何處理的?留言與我們一起深入交流。

評論留言

脣槍舌劍 (1)

  • 吕的頭像

    2025.3.4 16:03

    解决问题了,还是直接修改nginx的配置文件和php.ini文件好用

    回覆