WordPress安装最重要的文件之一是配置文件。它驻留在根目录中,包含常量定义和PHP指令,使WordPress按您想要的方式工作。WP-config.php文件如数据库连接细节,表前缀,路径对特定目录和很多相关的特定设置文件存储数据功能。
- 基本的wp-config.php文件
- 基本配置:编辑文件系统
- 开发人员功能:调试模式和保存查询
- 内容相关设置
- 允许的内存大小
- 自动更新
- 安全设定
- 其他高级设置
- 锁定wp-config.php
基本的wp-config.php文件
首次安装WordPress时,系统会要求您输入所需信息,例如数据库详细信息和表前缀。有时您的主机会为您设置WordPress,您不需要手动运行设置。但是,当您手动运行5分钟安装时,系统会要求您输入一些存储在wp-config中的最相关数据。
当您运行设置时,您将需要输入存储在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这样的插件来重命名数据库表和字段名称,并更新配置文件风险。
注意:即使您将使用插件更改表前缀,备份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' );
我们可以通过定义以下常量来移动插件文件夹:
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/mydir/plugins' ); define( 'WP_PLUGIN_URL', 'http://example.com/wp-content/mydir/plugins' );
同样,我们可以通过设置新的目录路径来移动uploads文件夹:
define( 'UPLOADS', 'wp-content/mydir/uploads' );
注意:所有路径都相对于ABSPATH
,并且它们不应包含前导斜杠。
完成后,排列文件夹并重新加载WordPress。
该图显示了与自定义结构相比的内置文件结构
不可能从wp-config文件中移动/wp-content/themes文件夹,但我们可以在插件或主题的功能文件中注册一个新的主题目录。
开发人员功能:调试模式和保存查询
如果您是开发人员,您可以强制WordPress显示错误和警告,以帮助您进行主题和插件调试。要启用调试模式,您只需将WP_DEBUG
值设置为true,如下所示:
define( 'WP_DEBUG', true );
WP_DEBUG
默认设置为false。如果您需要禁用调试模式,您可以删除定义,或将常量的值设置为 false。当您在实时站点上工作时,您应该禁用调试模式。错误和警告不应显示给站点查看者,因为它可以为黑客提供有价值的信息。但是,如果您无论如何都必须进行调试怎么办?在这种情况下,您可以强制WordPress在/wp-content文件夹中的debug.log文件中保留错误和警告的内存。要启用此功能,请将以下代码复制并粘贴到wp-config.php文件中:
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中构建高效查询。
内容相关设置
当您的网站长大后,您可能希望减少文章修订的数量。默认情况下,WordPress每60秒自动保存一次修订。我们可以通过在wp-config中设置自定义间隔来更改此值,如下所示:
define( 'AUTOSAVE_INTERVAL', 160 );
当然,您也可以减少自动保存间隔。每次我们保存我们的编辑时,WordPress都会在文章表中添加一行,以便我们可以恢复文章和页面的先前修订。这是一个有用的功能,当我们的网站变大时,它可能会变成一个问题。幸运的是,我们可以减少要存储的最大发布修订数量,或者完全禁用该功能。如果您想禁用后期修订,请定义以下常量:
define( 'WP_POST_REVISIONS', false );
如果您想限制最大修订数,请添加以下行:
define( 'WP_POST_REVISIONS', 10 );
默认情况下,WordPress 会将删除的文章、页面、附件和评论存储30天,然后永久删除它们。我们可以使用以下常量更改此值:
define( 'EMPTY_TRASH_DAYS', 10 );
我们甚至可以禁用垃圾箱,将其值设置为0,但考虑到WordPress将不再允许您恢复内容。
允许的内存大小
有时,您可能会收到如下消息:
致命错误:已用尽xxx字节的允许内存大小……
最大内存大小取决于服务器配置。如果您无权访问php.ini文件,您可以通过在wp-config文件中设置WP_MEMORY_LIMIT
常量来增加WordPress的内存限制。默认情况下,WordPress尝试为单个站点分配40Mb给 PHP,为多站点安装分配64MB 。当然,如果PHP分配的内存大于40Mb(或64Mb),WordPress会采用最大值。话虽如此,您可以使用以下行设置自定义值:
define( 'WP_MEMORY_LIMIT', '128M' );
如果需要,您还可以使用以下语句设置最大内存限制:
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
建议阅读:如何提高WordPress中的PHP内存限制。
自动更新
从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
一项安全功能是通过SSL管理。如果您购买了SSL证书,并且配置正确,您可以强制WordPress在任何登录和管理会话中通过SSL传输数据。使用以下常量:
define( 'FORCE_SSL_ADMIN', true );
如果您需要有关SSL管理的更多信息,请查看Codex。
其他两个常量允许阻止外部请求并列出允许的主机。
define( 'WP_HTTP_BLOCK_EXTERNAL', true ); define( 'WP_ACCESSIBLE_HOSTS', 'example.com,*.anotherexample.com' );
在这个例子中,我们首先禁用了来自外部主机的所有访问,然后列出了允许的主机,用逗号分隔(允许通配符)。
其他高级设置
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根文件夹上方一级(仅一级)。但是,这种技术有点争议,因此我建议采用其他解决方案来保护文件。如果您的网站在Web服务器-Apache上运行,您可以将以下指令添加到.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_KEY、 SECURE_AUTH_KEY、 LOGGED_IN_KEY和NONCE_KEY。
默认情况下,它们是为您随机生成的。但WordPress实际上有一个免费工具,您可以使用它来生成新的随机密钥。然后,您可以简单地更新存储在wp-config.php文件中的当前密钥。
WordPress安全密钥
阅读有关WordPress安全密钥的更多信息 。
最后,您应该仔细检查并确保您的wp-config.php文件的权限得到加强。通常,WordPress站点根目录中的文件将设置为644,这意味着文件所有者可以读取和写入文件,该文件的所有者组中的用户可以读取该文件,其他所有人都可以读取这些文件。根据 WordPress文档,wp-config.php文件的权限应设置为440或400,以防止服务器上的其他用户读取它。您可以使用FTP客户端轻松更改此设置。
wp-config.php权限
小结
在这篇文章中,我列出了很多我们可以定义到wp-config文件中的WordPress常量。其中一些常量是常用的,它们的功能很容易理解。其他常量启用需要深入了解WordPress和站点管理的高级功能。