跳到正文
配置

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 文档根据情况给出了略有不同的数字:

  • 安全加固指南说,只有你和 Web 服务器应该能读取该文件,并说这通常意味着 400 或 440。
  • 文件权限指南说,在使用 suexec 的共享主机上用 440 或 400,以防服务器上的其他用户读取。它还把 600 列为安全设置的示例。
  • 对于普通的 WordPress 文件,该指南给出的是 644 或 640。

哪个数字可行,取决于你的 Web 服务器以哪个系统用户运行。Web 服务器必须能读取该文件,所以如果修改后网站无法加载,请改回之前的值,并询问主机商哪个值适合他们的环境。

常见错误

  • 把设置粘贴到 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 的安全加固指南说,只有你和 Web 服务器应该能读取它,这通常意味着 400 或 440。它的文件权限指南还列出了 600。Web 服务器仍然必须能读取该文件,所以如果网站无法加载,请咨询你的主机商。

参考来源


使用免费的 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 的安全加固指南说,只有你和 Web 服务器应该能读取它,这通常意味着 400 或 440。它的文件权限指南还列出了 600。Web 服务器仍然必须能读取该文件,所以如果网站无法加载,请咨询你的主机商。