什么是wp-config.php文件?以及如何设置

2020.04.21 -

   

该文件是WordPress安装中最重要的文件之一。它位于根目录中,并包含常量定义和PHP指令,这些指令使WordPress可以按您希望的方式工作。
WP-config.php文件包括如数据库连接细节,表前缀,路径对特定目录和很多相关的特定设置文件存储数据功能,让我么详细了解一下wp-config.php文件吧。

基本的wp-config.php文件

首次安装WordPress时,要求您输入所需的信息,例如数据库详细信息和表前缀。有时,您的主机将为您设置WordPress,并且不需要您手动运行该设置。但是,当您手动运行5分钟的安装时,系统会要求您输入存储在wp-config中的一些最相关的数据。

运行设置时,将需要输入将存储在wp-config.php文件中的数据

运行设置时,将需要输入存储在wp-config.php文件中的数据

这是一个基本的wp-config.php文件:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

define('AUTH_KEY',		'put your unique phrase here');
define('SECURE_AUTH_KEY',	'put your unique phrase here');
define('LOGGED_IN_KEY',		'put your unique phrase here');
define('NONCE_KEY',		'put your unique phrase here');
define('AUTH_SALT',		'put your unique phrase here');
define('SECURE_AUTH_SALT',	'put your unique phrase here');
define('LOGGED_IN_SALT',	'put your unique phrase here');
define('NONCE_SALT',		'put your unique phrase here');

$table_prefix  = 'wp_';

/* That's all, stop editing! Happy blogging. */

通常,运行安装程序时会自动生成此文件,但是WordPress有时不具有写入安装文件夹的权限。在这种情况下,您应该创建一个空的wp-config.php文件,从wp-config-sample.php复制并粘贴内容,并为所有定义的常量设置适当的值。完成后,将文件上传到根文件夹并运行WordPress。

注意:常量定义和PHP指令以特定的顺序出现,我们永远不应更改。而且我们绝不应在以下注释行下添加内容:

/* That's all, stop editing! Happy blogging. */

首先,给出您应该从主机接收到的数据库常量的定义:

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
  • DB_HOST
  • DB_CHARSET
  • DB_COLLATE

根据数据库的详细信息,八个安全密钥将使站点对黑客的安全性更高。当您运行安装时,WordPress将自动生成安全性密码,但是您可以随时更改它们,并添加任意字符串。为了提高安全性,请考虑使用在线生成器。

$table_prefix变量存储所有WordPress表的前缀。不幸的是,任何人都知道它的默认值,并且这可能会使WordPress数据库面临漏洞,可以通过$table_prefix在运行设置时设置自定义值来轻松修复该漏洞。

要在正在运行的网站中更改表前缀,您应该对数据库运行多个查询,然后手动编辑wp-config.php文件。如果您无权访问数据库或不具备构建自定义查询所需的知识,则可以安装诸如Change Table Prefix之类的插件来重命名数据库表和字段名,并使用no来更新配置文件风险。

注意:即使您将使用插件更改表前缀,备份WordPress文件和数据库也是一个好习惯。

到目前为止,分析仅限于基本配置。但是我们可以使用许多常量,可以定义它们以启用功能,自定义和保护安装。

通过基本配置:编辑文件系统

WordPress文件系统为用户和黑客所熟知。因此,您可以考虑通过将特定文件夹移动到任意位置并在wp-config文件中设置相应的URL和路径来更改内置文件结构。
首先,我们可以通过定义两个常量来移动内容文件夹。第一个设置完整目录路径:

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/site/wp-content' );

第二个设置新的目录URL:

define( 'WP_CONTENT_URL', 'http://example.com/site/wp-content' );

我们可以通过定义以下常量来仅移动plugin文件夹:

define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/mydir/plugins' );
define( 'WP_PLUGIN_URL', 'http://example.com/wp-content/mydir/plugins' );

同样,我们可以通过设置新目录路径来移动上载文件夹:

define( 'UPLOADS', 'wp-content/mydir/uploads' );

注意:所有路径都相对于ABSPATH,并且它们不应包含前导斜线。

完成后,整理文件夹并重新加载WordPress。

该图显示了与自定义结构相比的内置文件结构

该图显示了与自定义结构相比的内置文件结构

无法从wp-config文件中移动/ wp-content / themes文件夹,但是我们可以在插件或主题的功能文件中注册新的主题目录。

开发人员功能:调试模式和保存查询

如果您是开发人员,则可以强制WordPress显示错误和警告,以帮助您进行主题和插件调试。要启用调试模式,只需将WP_DEBUGvalue 设置为true,如下所示:

define( 'WP_DEBUG', true );

WP_DEBUG默认情况下设置为false。如果需要禁用调试模式,则可以删除定义,或将常量的值设置为false。
在生活中的网站上工作时,应禁用调试模式。错误和警告永远不应该显示给网站查看者,因为它可以为黑客提供有价值的信息。

但是,如果仍然要调试怎么办?在这种情况下,您可以强制WordPress将错误和警告存储在/ wp-content文件夹中的debug.log文件中。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

为了使此功能起作用,我们首先需要启用调试模式。然后,将其设置WP_DEBUG_LOG为true会强制WordPress将消息存储到debug.log文件中,而将其定义WP_DEBUG_DISPLAY为false 则会将它们隐藏在屏幕之外。

最后,我们将PHP变量的值设置为0,display_errors这样就不会在屏幕上显示错误消息。wp-config永远不会从缓存中加载,这是覆盖php.ini设置的好地方。

注意:这是一项很棒的功能,您可以利用它来注册WordPress不会在屏幕上显示的消息。例如,当publish_post触发操作时,WordPress会加载一个脚本来保存数据,然后将用户重定向到帖子编辑页面。在这种情况下,您可以注册消息,但不能在屏幕上打印它们。

另一个调试常量确定要加载的脚本和样式的版本。SCRIPT_DEBUG如果要加载未压缩的版本,请设置为true:

define( 'SCRIPT_DEBUG', true );

如果您的主题或插件显示了从数据库中检索到的数据,则您可能希望存储查询详细信息以供以后查看。该SAVEQUERIES常量迫使WordPress将查询信息存储到$wpdb->queries数组中。打印这些详细信息,并将以下代码添加到页脚模板中:

if ( current_user_can( 'administrator' ) ) {
        global $wpdb;
        echo '<pre>';
        print_r( $wpdb->queries );
        echo '</pre>';
}

内容相关设置

当您的网站发展壮大时,您可能希望减少发布修订的数量。默认情况下,WordPress每60秒自动保存一次修订。我们可以通过在wp-config中设置自定义间隔来更改此值,如下所示:

define( 'AUTOSAVE_INTERVAL', 160 );

当然,您也可以减少自动保存间隔。每次我们保存编辑内容时,WordPress都会在posts表中添加一行,以便我们可以恢复以前的post和page版本。这是一项有用的功能,当我们的网站变大时可能会引起问题。幸运的是,我们可以减少要存储的最大修订版本数,或者完全禁用该功能。如果要禁用发布修订,请定义以下常量:

define( 'WP_POST_REVISIONS', false );

如果要限制最大修订数量,请添加以下行:

define( 'WP_POST_REVISIONS', 10 );

默认情况下,WordPress将垃圾邮件,页面,附件和评论存储30天,然后将其永久删除。我们可以使用以下常量更改此值:

define( 'EMPTY_TRASH_DAYS', 10 );

我们甚至可以禁用垃圾桶,将其值设置为0,但请考虑WordPress将不再允许您恢复内容。

允许的内存大小

有时您可能会收到类似以下的消息:

致命错误:允许的内存大小为xxx字节已用尽……

最大内存大小取决于服务器配置。如果您无权访问php.ini文件,则可以通过WP_MEMORY_LIMIT在wp-config文件中设置常量来增加WordPress的内存限制。

默认情况下,WordPress尝试为单个站点分配40Mb到PHP,为多站点安装分配64MB 。当然,如果PHP分配的内存大于40Mb(或64Mb),则WordPress将采用最大值。话虽如此,您可以使用以下行设置自定义值:

define( 'WP_MEMORY_LIMIT', '128M' );

如果需要,您还可以使用以下语句设置最大内存限制:

define( 'WP_MAX_MEMORY_LIMIT', '256M' );

自动更新

从3.7版开始,WordPress支持安全版本的自动更新。这是一项重要功能,允许站点管理员始终保持其网站安全。您可以通过定义以下常量来禁用所有自动更新:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

禁用更新也许不是一个好主意,但这是您的选择。默认情况下,自动更新不适用于主要版本,但是您可以启用定义WP_AUTO_UPDATE_CORE如下的任何核心更新:

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

默认值为minor

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

另一个常量禁用自动更新(以及任何对文件的任何更新或更改)。如果设置DISALLOW_FILE_MODS为true,则将禁用所有文件编辑,包括主题和插件的安装和更新。因此,不建议使用它。

安全设定

我们可以使用wp-config文件来提高站点安全性。除了上面已经讨论过的文件结构更改之外,我们还可以锁定一些可能会打开不必要漏洞的功能。首先,我们可以禁用管理面板中提供的文件编辑器。以下常量将隐藏“外观编辑器”屏幕:

define( 'DISALLOW_FILE_EDIT', true );

注意:请注意,如果将此常量定义为true,则某些插件将无法正常工作。

disallow_file_edit

disallow_file_edit

安全功能是基于SSL的管理。如果您购买了SSL证书,并且配置正确,则可以在任何登录和管理会话中强制WordPress通过SSL传输数据。使用以下常量:

define( 'FORCE_SSL_ADMIN', true );

其他高级设置

WP_CACHE设置为true包括wp-content / advanced-cache.php脚本。仅当您安装持久性缓存插件时,此常数才有效。

CUSTOM_USER_TABLE并且CUSTOM_USER_META_TABLE用于设置除默认wp_users和wp_usermeta表以外的自定义用户表。这些常量启用了一项有用的功能,该功能允许站点用户仅使用一个帐户即可访问多个网站。为了使此功能正常工作,所有安装都应共享相同的数据库。

从2.9版开始,WordPress支持自动数据库优化。由于此功能,将其设置WP_ALLOW_REPAIR为true,WordPress将自动修复损坏的数据库。

每次您编辑图像时,WordPress都会创建一组新图像。如果要还原原始图像,所有生成的集将保留在服务器上。您可以通过设置IMAGE_EDIT_OVERWRITE为true 来覆盖此行为,以便在还原原始图像时,所有编辑内容都将从服务器中删除。

锁定wp-config.php

现在我们知道为什么wp-config.php是最重要的WordPress文件之一。那么,为什么我们不将其隐藏起来呢?首先,我们可以将wp-config移到WordPress根文件夹上一层仅一层)。但是,此技术有点争议,因此我建议采用其他解决方案来保护文件。如果您的网站在Apache Web Server上运行,则可以将以下指令添加到.htaccess文件中:

<files wp-config.php>
order allow,deny
deny from all
</files>

如果网站在Nginx上运行,则可以将以下指令添加到配置文件中:

location ~* wp-config.php { deny all; }

注意:仅在设置完成后才应添加这些说明。

如果您的网站经历了多次迁移,或者您是从其他人那里购买的,则建议您创建一组全新的WordPress安全密钥。这些密钥是一组随机变量,可以改善对用户Cookie中存储的信息的加密。从WordPress 2.7开始,已经有4种不同的密钥: 

AUTH_KEYSECURE_AUTH_KEYLOGGED_IN_KEYNONCE_KEY。

默认情况下,它们是为您随机生成的。但是WordPress实际上有一个免费工具,您可以使用它生成新的随机密钥。然后,您可以简单地更新存储在wp-config.php文件中的当前密钥。

WordPress安全密钥
WordPress安全金钥

最后,您应该仔细检查并确保对wp-config.php文件的权限得到了加强。通常,WordPress网站根目录中的文件将设置为644,这意味着文件的所有者可以读取和写入文件,该文件的组所有者中的用户可以读取文件,其他所有人也可以读取。

根据  WordPress文档,wp-config.php文件的权限应设置为440或400,以防止服务器上的其他用户读取它。您可以使用FTP客户端轻松更改此设置。

wp-config权限
wp-config.php权限

总结

在这篇文章中,我列出了很多可以定义到wp-config文件中的WordPress常量。这些常量中的一些是常用的,它们的功能很容易理解。其他常量启用高级功能,这些功能需要对WordPress和站点管理有深入的了解。

本站文章禁止转载,违者必究
阅 239
0

该文件是WordPress安装中最重要的文件之一。它位于根目录中,并包含常量定义和PHP指令,这些指令使Wor […]

湘公网安备 43011102001693号

    湘ICP备19003021号-1