跳至內容
設定

WordPress wp-config.php 檔案:作用與編輯方法

wp-config.php 檔案儲存 WordPress 的資料庫登入資訊、安全金鑰和網站設定。了解它的位置、每個部分的作用,以及如何安全地編輯它。

發布於

wp-config.php 是告訴 WordPress 如何連線資料庫以及如何運作的檔案。它通常位於安裝的根目錄,與 wp-admin 和 wp-content 放在一起。你可以放心地在 “That’s all, stop editing!”(就這些,停止編輯!)這一行上方新增或修改設定,這一行下方的兩個程式碼區塊則應保持不動。請先備份,因為一個打字錯誤就可能讓整個網站癱瘓。

重點

  • 這個檔案儲存資料庫密碼和安全金鑰,請像對待密碼一樣對待它,絕對不要把內容貼到論壇或支援聊天中。
  • 自訂設定放在 “stop editing” 這一行上方。這一行下方的最後一行會載入 WordPress,放在那一行之後的設定為時已晚。
  • 你下載的 WordPress 中包含 wp-config-sample.php。真正的 wp-config.php 是在安裝設定時建立的。
  • 不要在正式網站只改那一行來修改 $table_prefix。WordPress 會表現得好像尚未安裝。

在哪裡找到 wp-config.php

透過 SFTP 連線或開啟主機的檔案管理員,然後進入包含 wp-admin、wp-includes 和 wp-content 的資料夾。WordPress 文件稱之為 WordPress 檔案目錄的根目錄。

如果不在那裡,就看上一層資料夾。WordPress 的載入程式先檢查安裝資料夾,再檢查上層資料夾。如果上層資料夾有自己的 wp-settings.php,它就會跳過,因為這表示那裡有另一個 WordPress 安裝。

如果兩處都沒有這個檔案,WordPress 會把訪客帶到安裝設定畫面。該畫面會根據 wp-config-sample.php 產生這個檔案。當它無法寫入資料夾時,會顯示文字,讓你手動貼到新檔案中。

每個預設部分的作用

wp-config-sample.php 是範本,它按以下順序包含這些部分:

部分儲存的內容可以修改嗎?
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST資料庫登入資訊。範例檔案用 localhost 作為主機,實際值可以向主機商取得。可以,在資料庫資訊變更時修改。錯誤的值會導致建立資料庫連線時發生錯誤。
DB_CHARSET, DB_COLLATE資料庫文字的儲存方式。預設值是 utf8mb4 和一個空值。範例檔案對 DB_COLLATE 的註解說,如有疑問就不要修改。
AUTH_KEY 到 NONCE_SALT用於登入 Cookie 的八個安全金鑰和鹽值。可以。修改後所有使用者都會被登出。
$table_prefix每個資料庫資料表名稱開頭的文字,預設是 wp_。只能在安裝時修改,除非你同時重新命名資料表,並更新資料庫中名稱使用該前綴的已儲存項目。
WP_DEBUG除錯模式,在範例檔案中設為 false。可以。除錯記錄位置指南說明了如何把錯誤寫入檔案。
“custom values”(自訂值)註解留給你自己設定的空白區域,到 “stop editing” 這一行結束。可以,你新增的內容放在這裡。
ABSPATH 和 wp-settings.php 那一行WordPress 的路徑,以及載入其餘部分的那一行。不可以。保持原樣。

取得新金鑰只需點一下:WordPress.org 金鑰服務每次載入都會給出一組新金鑰。用新的一組取代全部八行。

較舊的檔案可能沒有 “custom values” 註解,並且寫的是 “Happy blogging”(祝寫部落格愉快)而不是 “Happy publishing”(祝發布愉快)。兩者都能正常運作,規則也不變:把設定加到那一行上方。

常見的修改項目

每一項都只佔一行。它們全部來自 wp-config.php 文件,預設值來自 WordPress 的 default-constants.php。

// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );

// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );

// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );

// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );

// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

只複製你需要的行。其中幾項有值得了解的細節:

  • 記憶體:WordPress 預設使用 40M,多站台為 64M;wp-admin 預設使用 256M,除非 PHP 已經允許更多。如果主機不允許修改限制,WordPress 會使用 PHP 現有的限制。記憶體耗盡指南說明了這種情況下該怎麼做。
  • 修訂版本:預設開啟。設為 false 可以關閉,設為數字可以限制數量。
  • 自動儲存和垃圾桶:預設值是 60 秒和 30 天。把 EMPTY_TRASH_DAYS 設為 0 會關閉垃圾桶,文件警告說,此後有人點擊 “Delete Permanently”(永久刪除)時,WordPress 不會要求確認。
  • 檔案編輯器:安全強化指南說,這無法阻止攻擊者上傳惡意檔案,但可能阻止某些攻擊。DISALLOW_FILE_MODS 更進一步,還會阻止外掛和佈景主題的安裝與更新。
  • HTTPS:當「WordPress 位址」設定已經以 https 開頭時,WordPress 會自動把 FORCE_SSL_ADMIN 設為 true。只有網址不以 https 開頭時,這一行才會改變什麼。
  • 網站網址:這些設定會覆寫已儲存的值,但不會改變資料庫中儲存的內容。請包含 https:// 部分。

有一項設定需要更多規劃。define( 'DISABLE_WP_CRON', true ); 會阻止頁面瀏覽觸發排程工作,所以開啟前請先為 wp-cron.php 設定伺服器 cron 工作,否則排程文章和其他定時作業都不會執行。

如何安全地編輯 wp-config.php

  1. 先下載一份副本。把它儲存在自己的電腦上。留在伺服器上、名為 wp-config.php.bak 之類的副本可能被瀏覽器讀取,因為伺服器不再把它當作 PHP 處理。
  2. 用純文字編輯器開啟檔案。WordPress 的編輯指南認為 Notepad++、Sublime Text 和 Visual Studio Code 都可以使用,並提醒不要用 Google Docs 和 Microsoft Word,因為文書處理軟體會更改引號,還可能加入破壞檔案的程式碼。
  3. 找到 “stop editing” 這一行,把新行直接放在它的上方。如果該設定已在上面定義過,就修改那一行。
  4. 儲存並上傳,然後開啟網站,在瀏覽器的無痕視窗中查看,同時開啟 wp-admin 中的一個頁面。
  5. 如果出了問題,把副本放回去。即使 wp-admin 無法載入,這樣也能復原修改。

把檔案移到網站根目錄之上

安全強化指南說,wp-config.php 可以存放在 WordPress 安裝目錄的上一層資料夾,載入程式的程式碼無需額外設定就能處理。移動檔案後,請檢查網站是否仍能載入。這種移動有兩個限制:

  • 上層資料夾不能有另一個 WordPress 安裝。載入程式會忽略帶有自己 wp-settings.php 的上層資料夾。
  • 只有 WordPress 位於網站根目錄時,上一層才是私有的。如果 WordPress 位於 /blog/ 這樣的子資料夾,上一層通常仍可公開存取。

同一指南也提到,有人認為這種移動的安全好處微乎其微,如果操作不慎還可能帶來嚴重漏洞。所以請把它當作選用操作。對於 Apache,該指南還提供了這段放在 .htaccess 檔案頂部的程式碼,用於拒絕對該檔案的直接請求:

<Files "wp-config.php">
Require all denied
</Files>

我們的 .htaccess 安全指南介紹了這條規則以及其他規則。

wp-config.php 的檔案權限

WordPress 文件根據情況給出了略有不同的數字:

  • 安全強化指南說,只有你和網頁伺服器應該能讀取該檔案,並說這通常代表 400 或 440。
  • 檔案權限指南說,在使用 suexec 的共享主機上用 440 或 400,以防伺服器上的其他使用者讀取。它也把 600 列為安全設定的範例。
  • 對於一般的 WordPress 檔案,該指南給出的是 644 或 640。

哪個數字可行,取決於你的網頁伺服器以哪個系統使用者執行。網頁伺服器必須能讀取該檔案,所以如果修改後網站無法載入,請改回之前的值,並詢問主機商哪個值適合他們的環境。

常見錯誤

  • 把設定貼到 wp-settings.php 這一行之後。這一行會載入 WordPress 並設好預設值。PHP 常數在指令碼執行期間不能變更,所以你加入的這一行不起作用。
  • 重複定義同一設定。第一行設定值,第二行無法變更它。PHP 手冊說明,從 PHP 8.5 起重複宣告常數已被棄用,因此還可能出現提示訊息。新增前先在檔案中搜尋這個名稱。
  • 給 true 或 false 加引號。'false' 是非空字串,PHP 會把它視為 true。請寫不帶引號的 false。而 '256M' 這樣的大小值需要引號。
  • 來自文書處理軟體或網頁的彎引號。PHP 需要直引號,彎引號會引發錯誤,導致網站無法載入。
  • 在正式網站顯示除錯錯誤。WP_DEBUG_DISPLAY 預設為 true,所以如果只開啟 WP_DEBUG,錯誤會顯示在頁面上被訪客看到。除錯記錄位置指南說明了如何把錯誤寫入檔案。
  • 一直開著 WP_ALLOW_REPAIR。文件說只在需要時啟用,問題解決後就要停用。

常見問題

WordPress 中的 wp-config.php 是什麼? 它是 WordPress 啟動時載入的設定檔。其中儲存資料庫登入資訊、安全金鑰和資料表前綴,WP_DEBUG 或 WP_MEMORY_LIMIT 等設定也加在這裡。

wp-config.php 檔案在哪裡? 通常在 WordPress 安裝的根目錄中,也就是 wp-admin、wp-includes 和 wp-content 所在的資料夾。WordPress 也接受它位於安裝目錄的上一層資料夾,前提是該資料夾中沒有 wp-settings.php。

應該把程式碼加到 wp-config.php 的什麼位置? 加到寫著 That’s all, stop editing! Happy publishing.(就這些,停止編輯!祝發布愉快。)的那一行上方。較舊的檔案寫的是 Happy blogging.(祝寫部落格愉快。)這一行下方的最後一行會載入 WordPress,所以放在那一行之後的設定為時已晚。

編輯 wp-config.php 安全嗎? 安全,前提是保留備份並使用純文字編輯器。一個打字錯誤就可能讓整個網站無法載入,包括 wp-admin,所以請先下載一份副本。如果編輯後網站出錯,把副本放回去即可。

如果刪除 wp-config.php 會怎樣? WordPress 將找不到資料庫登入資訊,並啟動安裝設定流程,提示你建立設定檔。你的內容仍保留在資料庫中,因此還原備份或用相同資訊重新建立該檔案,就能讓網站重新連線。

wp-config.php 應該設定什麼權限? WordPress 的安全強化指南說,只有你和網頁伺服器應該能讀取它,這通常代表 400 或 440。它的檔案權限指南也列出了 600。網頁伺服器仍然必須能讀取該檔案,所以如果網站無法載入,請詢問你的主機商。

參考來源


使用免費的 wp-config.php 產生器產生你需要的設定,不必手動輸入,還包括全新的安全金鑰。

FAQ

常見問題

WordPress 中的 wp-config.php 是什麼?

它是 WordPress 啟動時載入的設定檔。其中儲存資料庫登入資訊、安全金鑰和資料表前綴,WP_DEBUG 或 WP_MEMORY_LIMIT 等設定也加在這裡。

wp-config.php 檔案在哪裡?

通常在 WordPress 安裝的根目錄中,也就是 wp-admin、wp-includes 和 wp-content 所在的資料夾。WordPress 也接受它位於安裝目錄的上一層資料夾,前提是該資料夾中沒有 wp-settings.php。

應該把程式碼加到 wp-config.php 的什麼位置?

加到寫著 That's all, stop editing! Happy publishing.(就這些,停止編輯!祝發布愉快。)的那一行上方。較舊的檔案寫的是 Happy blogging.(祝寫部落格愉快。)這一行下方的最後一行會載入 WordPress,所以放在那一行之後的設定為時已晚。

編輯 wp-config.php 安全嗎?

安全,前提是保留備份並使用純文字編輯器。一個打字錯誤就可能讓整個網站無法載入,包括 wp-admin,所以請先下載一份副本。如果編輯後網站出錯,把副本放回去即可。

如果刪除 wp-config.php 會怎樣?

WordPress 將找不到資料庫登入資訊,並啟動安裝設定流程,提示你建立設定檔。你的內容仍保留在資料庫中,因此還原備份或用相同資訊重新建立該檔案,就能讓網站重新連線。

wp-config.php 應該設定什麼權限?

WordPress 的安全強化指南說,只有你和網頁伺服器應該能讀取它,這通常代表 400 或 440。它的檔案權限指南也列出了 600。網頁伺服器仍然必須能讀取該檔案,所以如果網站無法載入,請詢問你的主機商。