标签: wp-config.php

  • wp-config.php文件——深入探讨如何配置WordPress

    wp-config.php文件——深入探讨如何配置WordPress-1

    WordPress安装最重要的文件之一是配置文件。它驻留在根目录中,包含常量定义和PHP指令,使WordPress按您想要的方式工作。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. */
    // ** 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. */

    // ** 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. */
    /* That’s all, stop editing! Happy blogging. */
    /* 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’ );
    define( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/site/wp-content’ );
    define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/site/wp-content' );

    第二个设置新目录URL:

    define( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
    define( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
    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’ );
    define( ‘WP_PLUGIN_DIR’, dirname(__FILE__) . ‘/wp-content/mydir/plugins’ );
    define( ‘WP_PLUGIN_URL’, ‘http://example.com/wp-content/mydir/plugins’ );
    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’ );
    define( ‘UPLOADS’, ‘wp-content/mydir/uploads’ );
    define( 'UPLOADS', 'wp-content/mydir/uploads' );

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

    完成后,排列文件夹并重新加载WordPress。

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

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

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

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

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

    define( ‘WP_DEBUG’, true );
    define( ‘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 );
    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG_DISPLAY’, false );
    @ini_set( ‘display_errors’, 0 );
    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 );
    define( ‘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>’;
    }
    if ( current_user_can( ‘administrator’ ) ) {
    global $wpdb;
    echo ‘<pre>’;
    print_r( $wpdb->queries );
    echo ‘</pre>’;
    }
    if ( current_user_can( 'administrator' ) ) {
            global $wpdb;
            echo '<pre>';
            print_r( $wpdb->queries );
            echo '</pre>';
    }

    有关此功能的更深入分析,请参阅如何在WordPress中构建高效查询

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

    define( ‘AUTOSAVE_INTERVAL’, 160 );
    define( ‘AUTOSAVE_INTERVAL’, 160 );
    define( 'AUTOSAVE_INTERVAL', 160 );

    当然,您也可以减少自动保存间隔。每次我们保存我们的编辑时,WordPress都会在文章表中添加一行,以便我们可以恢复文章和页面的先前修订。这是一个有用的功能,当我们的网站变大时,它可能会变成一个问题。幸运的是,我们可以减少要存储的最大发布修订数量,或者完全禁用该功能。如果您想禁用后期修订,请定义以下常量:

    define( ‘WP_POST_REVISIONS’, false );
    define( ‘WP_POST_REVISIONS’, false );
  • 如何提高WordPress中的PHP内存限制

    如何提高WordPress中的PHP内存限制

    你的插件不工作。您的网站未加载。您不断看到“Allowed memory size exhausted”错误,并且一直说增加您的PHP内存限制。那是什么,你如何解决它?

    PHP内存限制的存在是为了阻止占用RAM的资源使您的网站崩溃。但有时它也可能导致问题,例如当您安装需要一点额外功能的插件并最终切断对您网站的访问时。

    当您因内存不足而遇到白屏死机时,您需要立即修复此问题。让我们来看看PHP内存限制是什么,以及如果达到资源上限如何解决它。

    1. 什么是PHP内存限制?
    2. 如何在WordPress中增加PHP内存限制
    3. PHP内存限制应该是多少?

    什么是PHP内存限制?

    PHP内存限制设置您网站上的任何脚本可以使用的最大内存量。但这究竟是什么意思?

    您的网站由服务器提供支持,这些服务器只是用于保持网站后端运行的专用计算机。与普通计算机一样,它们使用处理器、存储和RAM(也称为内存)等组件。

    RAM是服务器最重要的部分之一。每个程序和应用程序都会占用一点内存。程序越密集,占用的内存就越多。当您的内存不足时,您的网站将运行缓慢甚至拒绝加载。

    Web应用程序(例如WordPress插件)是可能占用服务器内存的众多事物之一。通常,这些应用程序占用的空间非常小,除非您的主机给您的内存非常少,否则您永远不会遇到任何问题。

    但是对于任何PHP应用程序的脚本可以在您的服务器上占用多少内存也有一个硬性上限。当其中一个脚本超过限制时,您就会开始遇到问题。

    您会看到一个带有错误的白屏,甚至可能会禁止您访问整个网站。

    为什么有内存限制?

    想象一下,您的服务器出了点问题。也许一个程序陷入无限循环并不断占用越来越多的内存,或者攻击者诱骗您安装运行恶意脚本的东西以占用您的所有资源。

    当PHP进程失控时,内存限制会在它们导致整个服务器崩溃或耗尽当月所有分配的资源之前对其进行硬性阻止。

    大多数合法的PHP脚本都很小。每个单独的脚本应该只占用少量的RAM,除非你有一个不寻常的程序需要在一个脚本中比大多数程序作为一个整体占用更多的资源。这些类型的插件当然存在,但很少见。

    如果您的内存不足,则很有可能存在损坏或恶意的PHP程序,因此会出现内存限制错误。

    但有时你确实在使用需要额外内存的大型插件。一些Web主机还将PHP内存限制设置得非常低,因此即使您没有安装异常耗电的应用程序,也会导致出现错误。

    无论哪种方式,您都会很快遇到内存耗尽错误。

    内存耗尽错误

    所以你遇到了内存耗尽错误。您可能会在整个站点中或在执行某些功能(例如提交表单)时遇到带有错误消息的白屏。

    出现在WordPress中的内存限制耗尽错误

    出现在WordPress中的内存限制耗尽错误

    这是一个严重的问题,尤其是当它影响您的整个网站时。过去的每一个小时都会有很多迷路的游客。

    罪魁祸首可能是一个非常大或配置错误的插件。因为WordPress插件是用PHP编码的,所以它们受PHP内存限制的限制。

    您可以通过一一禁用插件来找到导致问题的插件,直到重新访问您的站点。一旦你确定了它,检查文档并查看它是否说明它需要运行多少内存。

    如果没有迹象表明它应该是一个非常强大的插件,您可能需要向插件开发人员提交一张票,因为它可能是错误的。请记住,PHP内存限制仅影响单个脚本,而不影响整个插件。因此,脚本很有可能陷入无限循环或其他故障。

    这个问题也可能在你身上。也许您的内存限制设置得太低,因此只有最小的插件才能正确运行。或者,也许您正在尝试安装一个插件,该插件要求您将限制提高到比正常水平更高的水平。

    无论哪种情况,您都应该尝试增加PHP内存限制。现在让我们向您展示如何做到这一点。

    如何在WordPress中增加PHP内存限制

    在做任何事情之前,有一种简单的方法可以检查您当前的PHP内存限制,而无需挖掘任何文件。如果您运行的是WordPress 5.2或更高版本,请转到后端的工具 > 站点健康运行状况。

    如果看不到,请安装运行Health Check & Troubleshooting

    在WordPress中查看站点健康信息

    在WordPress中查看站点健康信息

    信息选项卡下,您将看到您的PHP内存限制。如果它已经设置得相当高,那么您的一个插件可能只是被破坏了。

    但是,如果您发现它非常低,则需要通过编辑wp-config.php文件来增加它。

    这并不总能解决问题。最终,PHP内存限制由您的Web主机设置。有时,您的站点设置为使用的资源少于主机提供的资源,调整文件可以解决此问题。但是如果他们的硬编码限制太低,无论你手动设置多高,你都无法真正增加它。

    但值得一试,所以让我们现在去编辑那个文件。

    PHP内存限制是多少?

    不同的服务器提供商所设置的限制都不太一样,稍微良心的服务器提供商可能会给出256MB的默认PHP内存限制。这对于99%的WordPress插件来说应该绰绰有余,而且实际上远远超过了大多数插件所应采用的。

    它可能仍然值得通过并确保它没有在WordPress的设置中无意中设置得太低。有可能某些东西改变了数量并减少了您可以访问的资源数量。

    如何通过FTP更改PHP内存限制

    要编辑wp-config.php文件,您需要使用FTP或SFTP访问您的站点。这允许您编辑影响站点运行方式的敏感内部文件。

    你只会改变一条线,所以应该很容易。首先安装FileZilla或您选择的其他FTP客户端。它是免费的,所以不用担心。在开始之前,您还应该备份您的网站。在编辑核心文件时很容易意外破坏某些东西。

    打开FileZilla并输入您的凭据。片刻之后,您应该连接到您的站点。

    单击公共文件夹并找到wp-config.php。如果找不到public或public-html,它可能被称为root、www或您的网站名称。

    在FileZilla中查找wp-config

    在FileZilla中查找wp-config

    打开wp配置。注意不要编辑PHP内存限制行以外的任何内容,因为这是一个敏感文件,可能会破坏您的网站。浏览它,直到找到这一行:define(‘WP_MEMORY_LIMIT’, ‘256M’);

    出现在wp-config中的WP内存限制

    出现在wp-config中的WP内存限制

    更改此处列出的数字,保存文件,然后关闭FileZilla。

    如何在cPanel中更改PHP内存限制

    有些主机不允许您通过FTP编辑文件。相反,他们可能会让您访问cPanel。如果您遇到这种情况,请不要担心——您也可以通过这种方式更改您的PHP内存限制。

    第一步:使用主机提供的凭据登录cPanel。在主屏幕上,您将看到一个带有选择PHP版本按钮的软件部分。

    在cPanel中选择PHP版本

    在cPanel中选择PHP版本

    单击它,然后在屏幕顶部,您将看到Switch to PHP options。向下滚动,直到看到带有下拉菜单的memory_limit 。单击它并将其更改为您想要的设置。单击应用,您就完成了。

    不是每个人都会有选择PHP版本选项。相反,您可能会看到MultiPHP Ini Editor 。如果是这种情况,您的步骤会有所不同。

    cPanel中的MultiPHP Ini编辑器

    cPanel中的MultiPHP Ini编辑器

    您需要单击它,然后在下一个窗口中,在Configure PHP INI basic settings下,您应该打开下拉列表并选择您的域。找到memory_limit部分并输入您想要的数字。单击应用以保存您的更改。

    您也可以尝试使用cPanel的文件管理器。这与通过FTP访问您的站点非常相似。在主页的文件部分下,单击文件管理器。找到您的public/public-html文件夹(或任何可能被称为的文件夹)并打开wp-config.php

    找到上一节中概述的WP_MEMORY_LIMIT行,并将数字更改为您想要的。保存您的更改并确保应用它们,这就是您需要做的所有事情。

    PHP内存限制应该是多少?

    当您更改内存限制时,您的第一个冲动可能是将其设置为900MB 或类似的值——尽可能高。但这实际上可能是一个非常糟糕的主意

    如果您网站上的脚本中断,它可能会迅速失控并使您的整个服务器崩溃。即使您的站点托管在功能强大的硬件上,一个脚本占用所有内存仍可能导致严重问题。

    错误配置的脚本异常繁重,但没有破坏到导致问题的程度,也可能被忽视。大多数PHP脚本都很小,内存限制错误是后端出现问题的警告信号。将其设置得太高,您可能会在不知不觉中搞砸脚本,使您的网站陷入困境。

    您应该将PHP内存限制设置得尽可能低,同时仍然允许您的站点正常运行。

    128MB是一个很好的基准。这是相当大的内存量,可以处理大多数密集型插件。如果您知道您将需要一些额外的功能,那么256MB甚至可以涵盖最重的插件。如果你确定你有一个真正的强者,512MB是你应该设置的绝对最大值。在90%的情况下,您永远不需要将内存限制提高到256 MB以上。

    如果更改内存限制不起作用怎么办?

    如果在编辑您的PHP文件后您仍然遇到内存错误,则问题之一是两个问题之一:您的主机分配的资源很少,或者您的服务器上有一个PHP脚本占用了太多的内存。

    同样,您应该检查并禁用您的插件,直到您确定罪魁祸首。使用128-256MB内存,没有插件应该占用这么多空间而不在文档中的某处提及它。禁用它并通知插件作者发生了什么。

    即使在所有插件都被禁用后仍然遇到错误?一定有一些冲突或其他PHP应用程序导致了问题。这超出了您自己能够处理的范围,因此请向您的网络托管服务商寻求帮助。

    如果问题根本不是插件,那么责任可能在于您的主机将内存限制设置得太低。您可能正在使用共享主机,它因分配非常少量的内存而臭名昭著 – 这是可以理解的,因为如果一个站点使用过多的RAM,它会使整个系统陷入数十个其他网站的困境。

    您在这里唯一的选择是升级到提供更多资源的计划。这可能最终代价高昂,特别是如果您只是想在新站点上安装一个密集的插件。如果您还没有很多访客,那么从升级中获得的所有其他资源都不会对您有太大帮助。

    您还可以切换到提供更多内存的主机。

    小结

    PHP内存限制的存在有一个非常正当的原因:您不希望流氓进程占用比预期更多的RAM。但是,当您在使用合法插件时达到极限并遇到白屏死机时,这可能会很烦人。

    最后,取决于您的主机您可以访问多少PHP内存。如果他们设置的标准太低,就不可能提高。

    但是,有时您的网站使用的资源会比您真正可以访问的资源少。在这种情况下,可以增加你的记忆力。尝试将其设置为128或256MB,因为您不希望它太高。

    如果这些方法都不起作用,则可能是缺少分配的资源导致了问题,而不是需要更改的设置。联系您的主机并询问如何获得更多,或切换到提供更大内存的主机,它可以为您提供比您需要的更多内存。