問題描述

假設我想更改 Wordpress 網站的最大上傳上限,並給出以下值:

wp-config.php:128MB php.ini:256MB .htaccess:64MB

那麼 Wordpress 在需要時處理哪個優先級呢?

最佳解決方案

您的問題不清楚您在每個文件中的變化是什麼,但我認為在每種情況下都是 upload_max_filesize PHP 設置。

一般來説,設置將按此順序應用,每個 over-riding 的前一個值:

  1. php.ini 中

  2. .htaccess 中的 Apache 指令

  3. 致電 ini_set()

但是,該設置定義為 PHP_INI_PERDIR,如本頁內容所述,無法使用 ini_set 進行設置,因此 wp-config.php 無法更改。所以在你給出的這個例子中,它將採用.htaccess 的值為 64MB 。

您可以通過在代碼中的某個地方運行 echo ini_get('upload_max_filesize'); 來驗證這一點。

請注意,還有其他地方的值可以設置,我以前沒有列出,如 per-user php.ini 文件和 other Apache configuration contexts 。此外,這些 can be disabled 中的一些,所以如果您的服務器未設置為允許.htaccess 中的 over-rides,您將無法在其中設置值。

還要注意,Wordpress 包括一些自己的配置變量,它們以不同的方式與 PHP 配置進行交互。例如,WP_MEMORY_LIMIT 將在啓動時嘗試提升 PHP memory_limit 設置,但具有 code which checks and never lowers it 。這不是一般規則,不同的設置會有所不同。

次佳解決方案

基本上考慮所有三個文件。

WordPress /您的服務器將按以下順序檢查:

wp-config.php > .htaccess > php.ini

如果”higher level”(鏈中較後) 中的某些內容限制了您的值,則前一個值將被忽略或覆蓋。如果一條鏈丟失,.htaccess 中的值為例,將使用下一個更高的值。

在您的示例中,.htaccess 會將 max_upload_size 限制為 64 MB,儘管您的服務器最高可達 256 MB,WordPress 也可以首先接受高達 128 MB 的文件大小。

您還可以通過.htaccess 文件設置不同的限制,並通過這樣做覆蓋 php.ini 的值,以使其不再是主導的值。這可以在很多託管環境中工作,所以很有可能以這種方式提高或降低 max_upload_size

如果您有一個更嚴格配置的主機/服務器,可能會禁用從 php.ini 覆蓋設置的選項。在這種情況下,從.htaccess 覆蓋 max_upload_size 不起作用,所以這可能是一個限制因素。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。