問題描述

假設我想更改 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。