编辑 gc-config.php

GeChiUI安装中最重要的文件之一就是该gc-config.php文件。此文件位于GeChiUI文件目录的根目录中,包含您网站的基本配置详细信息,例如数据库连接信息。

首次下载GeChiUI时,该 gc-config.php文件不包括在内。GeChiUI设置过程将根据您提供的信息为您创建一个文件。 gc-config.php

您可以手动创建一个gc-config.php文件,方法是找到名为gc-config-sample.php(位于根安装目录中)的示例文件,根据需要对其进行编辑,然后将其保存为gc-config.php.

注意:文件内容的gc-config-sample.php顺序非常具体。顺序很重要。如果您已经有一个gc-config.php文件,重新排列文件的内容可能会在您的文章上产生错误。

要更改gc-config.php安装文件,您将需要以下信息:

  • 数据库名称–GeChiUI使用的数据库名称
  • 数据库用户名– 用于访问数据库的用户名
  • 数据库密码– 用户名用于访问数据库的密码
  • 数据库主机– 数据库服务器的主机名。可能还需要端口号、Unix 套接字文件路径或管道。

如果您的托管服务提供商为您安装了GeChiUI,请从他们那里获取信息。如果您管理自己的Web 服务器或托管帐户,您将获得此信息作为创建数据库和用户的结果。

配置数据库设置

重要提示: 切勿使用 Microsoft Word 之类的文字处理器来编辑GeChiUI文件!

在您的GeChiUI目录的基本目录中找到该文件gc-config-sample.php 并在文本编辑器中打开。

默认 gc-config-sample.php

注意:这是默认 gc-config-sample.php 的示例。此处的值是向您展示如何操作的示例。

// ** MySQL 设置 - 您可以从您的虚拟主机获取此信息 ** //
/**GeChiUI的数据库名称 */
define( 'DB_NAME', 'database_name_here' );
/** MySQL 数据库用户名 */
define( 'DB_USER', 'username_here' );
/** MySQL 数据库密码 */
define( 'DB_PASSWORD', 'password_here' );
/** MySQL 主机名 */
define( 'DB_HOST', 'localhost' );

注意: /* */ 中的文本是注释,仅供参考。

设置数据库名称

将“database_name_here”替换为您的数据库名称,例如MyDatabaseName

define( 'DB_NAME', 'MyDatabaseName' ); //示例 MySQL 数据库名称

设置数据库用户

将“username_here”替换为您的用户名,例如MyUserName

define( 'DB_USER', 'MyUserName' ); //示例 MySQL 用户名

设置数据库密码

将“password_here”替换为您的密码,例如MyPassWord

define( 'DB_PASSWORD', 'MyPassWord' ); // MySQL 密码示例

设置数据库主机

将“localhost”替换为您的数据库主机的名称,例如MyDatabaseHost。可能还需要端口号或 Unix 套接字文件路径。

define( 'DB_HOST', 'MyDatabaseHost' ); // 示例 MySQL 数据库主机

注意:很有可能您不必更改它。如果您不确定,请尝试使用默认值 ‘localhost’ 进行安装,看看它是否有效。如果安装失败,请联系您的网络托管服务提供商。

MYSQL 备用端口

如果您的主机为您的数据库使用备用端口号,您需要更改文件中的DB_HOSTgc-config.php以反映您的主机提供的备用端口。

对于本地主机:

define( 'DB_HOST', '127.0.0.1:3307' );

或在某些情况下:

define( 'DB_HOST', 'localhost:3307' );

对于指定服务器:

define( 'DB_HOST', 'mysql.example.com:3307' );

3307替换为主机提供的任何端口号。

MYSQL 套接字或管道

如果您的主机使用 Unix 套接字或管道,请相应地调整文件中的DB_HOSTgc-config.php

define( 'DB_HOST', '127.0.0.1:/var/run/mysqld/mysqld.sock' );
// or define( 'DB_HOST', 'localhost:/var/run/mysqld/mysqld.sock' );
// or define( 'DB_HOST', 'example.tld:/var/run/mysqld/mysqld.sock' );

替换 /var/run/mysqld/mysqld.sock为您的主机提供的套接字或管道信息。

可能的 DB_HOST 值

不同的托管公司对其 mysql 数据库使用不同的网络设置。如果您的托管公司在下面的左栏中列出,则右侧的值类似于 DB_HOST 的正确值。请联系您的技术支持和/或搜索您的托管公司在线文档以确定。

托管公司DB_HOST 值猜测
1和1db12345678
A2 托管本地主机
一个托管本地主机
阿鲁巴岛与激活邮件一起提供的 localhost 或真实 IP。
一个小橙子本地主机
美国电话电报公司xxxxxxxx.carrierzone.com 在 PHP MyAdmin 中找到的完整服务器名称。
蓝主机本地主机
梦想主机mysql.example.com
GoDaddy – 共享和 4GH 托管在数据库菜单中转到 MySQL。在数据库名称的右侧,单击操作和详细信息。主机名位于窗口底部。
GoDaddy – cPanel 托管本地主机
GoDaddy – Plesk 托管使用 Plesk 中数据库部分中显示的 IP 地址。不包括:3306
HostGator本地主机
ICDSoft本地主机:/tmp/mysql5.sock
Infomaniak网络mysql.yourdomain
InMotion 托管本地主机
网页用户名.ipagemysql.com
电源用户名.ipowermysql.com
笑鱿鱼本地主机
MediaTemple 网格internal-db.s00000.gridserver.com –(将“00000”替换为实际站点编号)
MediaTemple DV本地主机
超级主机本地主机
NearlyFreeSpeech.Net用户名.db
网络解决方案mysqlv5
one.comexample.com.mysql
配对网络dbnnx.pair.com
昆腾网本地主机
机架空间云非托管服务器的本地主机,云站点的变量,如 mysqlXY-AB.wcN.dfQ.stabletransit.com 其中 X,Y,A,B,N,Q 是变量
SysFix.eu 电源托管数据电源.sysfix.eu
站点5本地主机
雅虎mysql
带有 cPanel 的主机本地主机
使用 Plesk 的主机本地主机
使用 DirectAdmin 的主机本地主机
顶级主机.itsql.your-domain-name.it

数据库字符集

DB_CHARSET可用于在定义 MySQL 数据库表时指定要使用的数据库字符集(例如 tis620 用于 TIS620 Thai)。

utf8 ( Unicode UTF-8 )的默认值几乎总是最好的选择。UTF-8 支持任何语言,因此您通常希望将 DB_CHARSET 保留为utf8并使用您的语言的DB_COLLATE值。

此示例显示 utf8,它被视为GeChiUI默认值:

define( 'DB_CHARSET', 'utf8' );

通常应该没有理由更改 DB_CHARSET 的默认值。如果您的文章需要不同的字符集,请阅读MySQL 支持的字符集和排序规则以获取有效的 DB_CHARSET 值。警告:执行升级的人。

gc-config.php如果您的文件中不存在 DB_CHARSET 和 DB_COLLATE ,除非您阅读并理解Converting Database Character Sets ,否则请勿将任何定义添加到您的文件中。对于现有文章,将 DB_CHARSET 和 DB_COLLATE 添加到文件中可能会导致重大问题。gc-config.phpgc-config.php

数据库排序规则

DB_COLLATE可用于指定数据库排序规则(即字符集的排序顺序)。在大多数情况下,此值应留空(null),以便 MySQL 根据 DB_CHARSET 指定的数据库字符集自动分配数据库排序规则。您可能需要将“’DB_COLLATE”’设置为大多数西欧语言的UTF-8 字符集中定义的 UTF-8 值之一的示例是,当您输入的字符不是与正在显示的内容相同。(另见SQL 手册中的Unicode 字符集)

GeChiUI默认 DB_COLLATE 值:

define( 'DB_COLLATE', '' );

UTF-8 Unicode 通用排序规则

define( 'DB_COLLATE', 'utf8_general_ci' );

UTF-8 Unicode 土耳其语排序规则

define( 'DB_COLLATE', 'utf8_turkish_ci' );

通常应该没有理由更改 DB_COLLATE 的默认值。将值留空(null)将确保在创建数据库表时由 MySQL 自动分配排序规则。警告:执行升级的人

gc-config.php如果您的文件中不存在 DB_COLLATE 和 DB_CHARSET ,除非您阅读并理解Converting Database Character Sets ,否则请勿将任何定义添加到您的文件中。您可能需要升级GeChiUI。gc-config.php

安全密钥

您不必记住密钥,只需将它们弄长、随机和复杂——或者更好的是,使用在线生成器。您可以随时更改这些以使所有现有 cookie 无效。这确实意味着所有用户都必须重新登录。

示例(不要使用这些!):

define( 'AUTH_KEY',         't`DK%X:>xy|e-Z(BXb/f(Ur`8#~UzUQG-^_Cs_GHs5U-&Wb?pgn^p8(2@}IcnCa|' );
define( 'SECURE_AUTH_KEY',  'D&ovlU#|CvJ##uNq}bel+^MFtT&.b9{UvR]g%ixsXhGlRJ7q!h}XWdEC[BOKXssj' );
define( 'LOGGED_IN_KEY',    'MGKi8Br(&{H*~&0s;{k0<S(O:+f#WM+q|npJ-+P;RDKT:~jrmgj#/-,[hOBk!ry^' );
define( 'NONCE_KEY',        'FIsAsXJKL5ZlQo)iD-pt??eUbdc{_Cn<4!d~yqz))&B D?AwK%)+)F2aNwI|siOe' );
define( 'AUTH_SALT',        '7T-!^i!0,w)L#JK@pc2{8XE[DenYI^BVf{L:jvF,hf}zBf883td6D;Vcy8,S)-&G' );
define( 'SECURE_AUTH_SALT', 'I6`V|mDZq21-J|ihb u^q0F }F_NUcy`l,=obGtq*p#Ybe4a31R,r=|n#=]@]c #' );
define( 'LOGGED_IN_SALT',   'w<$4c$Hmd%/*]`Oom>(hdXW|0M=X={we6;Mpvtg+V.o<$|#_}qG(GaVDEsn,~*4i' );
define( 'NONCE_SALT',       'a|#h{c5|P &xWs4IZ20c2&%4!c(/uG}W:mAvy<I44`jAbup]t=]V<`}.py(wTP%%' );

通过在密码中添加随机元素,密钥使您的网站更难成功攻击。

简单来说,密钥是一个密码,其中包含的元素使得生成足够的选项来突破您的安全障碍变得更加困难。像“password”或“test”这样的密码很简单,很容易被破解。一个不使用字典单词的随机长密码,例如“88a7da62429ba6ad3cb3c76a09641fc”,暴力攻击者需要数百万小时才能破解。’ salt用于进一步增强生成结果的安全性。

增强安全性需要四个密钥。推荐使用四种盐,但不是必需的,因为如果没有提供,GeChiUI会为您生成盐。gc-config.php出于包容性,它们默认包含在其中。

高级选项

以下部分可能包含高级信息,并且某些更改可能会导致无法预料的问题。请确保在修改这些设置之前练习定期备份并知道如何恢复它们。

表前缀

$table_prefix是放在数据库表前面的值。如果您想使用gc_以外的其他内容作为数据库前缀,请更改该值。通常,如果您在同一个数据库中安装多个GeChiUI文章,则会更改此设置,就像使用多站点功能所做的那样。

如果您为每个数据库指定一个唯一的前缀,则可以在一个数据库中进行多个安装。如果您选择这样做,请记住安全性。

$table_prefix = 'r235_';  // 请只使用数字、字母和下划线!

GC_SITEURL

GC_SITEURL 允许定义GeChiUI地址 (URL)。定义的值是GeChiUI核心文件所在的地址。它也应该包括该http://部分。末尾不要加斜线“ / ”。设置此值gc-config.php会覆盖 siteurl 的gc_options值。添加它可以减少加载站点时的数据库调用次数。注意:不会改变数据库存储的值。如果该行从. 使用RELOCATE常量更改数据库中的siteurl值。gc-config

如果GeChiUI安装到example.com 的名为“gechiui”的目录中,请像这样定义 GC_SITEURL:

define( 'GC_SITEURL', 'http://example.com/gechiui' );

根据 $_SERVER[‘HTTP_HOST’] 动态设置 GC_SITEURL

define( 'GC_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/gechiui' );

注意: HTTP_HOST 是 PHP 根据请求中 HTTP HOST Header 的值动态创建的,因此可能存在文件包含漏洞。SERVER_NAME 也可以动态创建。但是,当 Apache 配置为 UseCanonicalName “on”时,SERVER_NAME 由服务器配置设置,而不是动态设置。在这种情况下,用户 SERVER_NAME 比 HTTP_HOST 更安全。

根据 $_SERVER[‘SERVER_NAME’] 动态设置 GC_SITEURL

define( 'GC_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/path/to/gechiui' );

文章地址(URL)

与 GC_SITEURL 类似,GC_HOME会覆盖 gc_options 表的home值,但不会在数据库中更改它。 home是您希望人们在浏览器中输入以访问您的GeChiUI文章的地址。它应该包括该部分,并且末尾http://不应有斜线“ / ”。添加它可以减少加载站点时的数据库调用次数。

define(‘GC_HOME’,’http://example.com/gechiui’);

如果您正在使用为GeChiUI提供自己的目录中描述的技术,请按照以下示例进行操作。请记住,如果您使用这样的设置,您还将index.php在您的 web 根目录中放置一个。

define( 'GC_HOME', 'http://example.com' );

根据 $_SERVER[‘HTTP_HOST’] 动态设置 GC_HOME

define( 'GC_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/gechiui' );

迁移 gc-content 文件夹

您可以将gc-content包含您的主题、插件和上传的目录移到GeChiUI应用程序目录之外。

将 GC_CONTENT_DIR 设置为该目录的完整本地路径(没有尾部斜杠),例如

define( 'GC_CONTENT_DIR', dirname(__FILE__) . '/blog/gc-content' );

将 GC_CONTENT_URL 设置为该目录的完整URL(没有尾部斜杠),例如

define( 'GC_CONTENT_URL', 'http://example/blog/gc-content' );

迁移插件文件夹

将 GC_PLUGIN_DIR 设置为该目录的完整本地路径(没有尾部斜杠),例如

define( 'GC_PLUGIN_DIR', dirname(__FILE__) . '/blog/gc-content/plugins' );

将 GC_PLUGIN_URL 设置为该目录的完整URI(没有尾部斜杠),例如

define( 'GC_PLUGIN_URL', 'http://example/blog/gc-content/plugins' );

如果您对插件有兼容性问题 将 PLUGINDIR 设置为该目录的完整本地路径(没有尾部斜杠),例如

define( 'PLUGINDIR', dirname(__FILE__) . '/blog/gc-content/plugins' );

迁移主题文件夹

您不能迁移主题文件夹,因为它的路径相对于gc-content文件夹是硬编码的:

$theme_root = GC_CONTENT_DIR . '/themes'; 

但是,您可以使用register_theme_directory注册其他主题目录。

查看如何迁移 gc-content文件夹。有关如何确定主题文件夹的更多详细信息,请参阅gc-includes/theme.php

迁移上传文件夹

将上传设置为:

define( 'UPLOADS', 'blog/gc-content/uploads' );

这条路径不能是绝对的。它总是相对于 ABSPATH,因此不需要前导斜杠。

修改自动保存间隔

编辑文章时,GeChiUI使用 Ajax 在您编辑时自动保存对文章的修订。您可能希望增加此设置以延长自动保存之间的延迟,或减少设置以确保您永远不会丢失更改。默认值为 60 秒。

define( 'AUTOSAVE_INTERVAL', 160 );// 秒

发布修订

默认情况下,GeChiUI将保存对文章或页面所做的每次编辑的副本,从而可以恢复到该文章或页面的先前版本。可以禁用修订的保存,或者可以指定每个文章或页面的最大修订数。

禁用后期修订

如果您设置此值,GeChiUI默认 GC_POST_REVISIONS 为true(启用后期修订)。如果您想禁用出色的修订功能,请使用以下设置:

define( 'GC_POST_REVISIONS', false );

注意:一些用户在将命令移至gc-config.php.

指定修订后的数量

如果您想指定GeChiUI存储的最大修订数,请将false更改为整数/数字(例如3 或 12)。

define( 'GC_POST_REVISIONS', 3 );

注意:一些用户在将命令移至gc-config.php.

可以为那些具有不寻常的域设置的人指定GeChiUIcookie 中设置的域。例如,如果子域用于提供静态内容,您可以将 cookie 域设置为仅您的非静态域,以防止GeChiUIcookie 随每个请求一起发送到您的子域上的静态内容。

define( 'COOKIE_DOMAIN', 'www.example.com' );

启用多站点/网络能力

GC_ALLOW_MULTISITE 是一项启用多站点功能的功能。如果此设置不存在,gc-config.php则默认为 false。

define( 'GC_ALLOW_MULTISITE', true );

重定向不存在的文章

如果访问者试图访问不存在的子域或子文件夹,NOBLOGREDIRECT 可用于重定向浏览器。

define( 'NOBLOGREDIRECT', 'http://example.com' );

GC_DISABLE_FATAL_ERROR_HANDLER

GeChiUI5.2 引入了恢复模式,当插件导致致命错误时,它会显示错误消息而不是白屏。

该网站遇到了技术难题。请检查您的站点管理员电子邮件收件箱以获取说明。

不再向用户显示白屏和 PHP 错误消息。但是在开发环境中,如果要启用 GC_DEBUG_DISPLAY,则必须通过将 GC_DISABLE_FATAL_ERROR_HANDLER 设置为 true 来禁用恢复模式。

define( 'GC_DISABLE_FATAL_ERROR_HANDLER', true );   // 5.2 and later define( 'GC_DEBUG', true );
define( 'GC_DEBUG_DISPLAY', true ); 

GC_DEBUG

GC_DEBUG选项控制一些错误和警告的报告,并启用 GC_DEBUG_DISPLAY 和 GC_DEBUG_LOG 设置。默认布尔值为 false。

define( 'GC_DISABLE_FATAL_ERROR_HANDLER', true );   // 5.2 and later
define( 'GC_DEBUG', true );

仅当 GC_DEBUG 设置为 true 时才会打印数据库错误。数据库错误由 gcdb 类处理,不受PHP 错误设置的影响。

将 GC_DEBUG 设置为 true 还会将错误报告级别提高到 E_ALL 并在使用不推荐使用的函数或文件时激活警告;否则,GeChiUI将错误报告级别设置为 E_ALL ^ E_NOTICE ^ E_USER_NOTICE。

GC_ENVIRONMENT_TYPE

GC_ENVIRONMENT_TYPE 选项控制站点的环境类型:localdevelopmentstagingproduction

环境类型的值按以下顺序处理,每个顺序方法覆盖任何先前的值:GC_ENVIRONMENT_TYPE PHP 环境变量和 GC_ENVIRONMENT_TYPE 常量。

对于这两种方法,如果提供的环境类型的值不在允许的环境类型列表中,production则将返回默认值。

设置值的最简单方法可能是通过定义常量:

define( 'GC_ENVIRONMENT_TYPE', 'staging' );

注意:当gc_get_environment_type()development返回时,如果站点的文件中没有定义GC_DEBUG,则将其设置为。truegc-config.php

脚本调试

SCRIPT_DEBUG是一个相关的常量,它将强制GeChiUI在gc-includes/jsgc-includes/cssgc-admin/js和中使用脚本和样式表的“开发”版本,gc-admin/css并将加载而不是.min.css.min.js版本。如果您打算修改一些GeChiUI的内置 JavaScript 或级联样式表,您应该将以下代码添加到您的配置文件中:

define( 'SCRIPT_DEBUG', true );

禁用 Javascript 连接

为了加快管理界面的速度,所有 JavaScript 文件都连接到一个 URL 中。如果 JavaScript 在管理界面中无法运行,您可以尝试禁用此功能:

define( 'CONCATENATE_SCRIPTS', false );

配置错误日志

配置错误日志记录可能有点棘手。首先,默认的 PHP 错误日志和显示设置在 php.ini 文件中设置,您可能有权访问,也可能无权访问。如果这样做,则应将它们设置为向公众提供的实时 PHP 页面所需的设置。强烈建议不要向公众显示错误消息,而是路由到错误日志。此外,错误日志不应位于服务器的可公开访问部分。示例推荐的 php.ini 错误设置:

error_reporting = 4339
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /home/example.com/logs/php_error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
html_errors = Off

关于错误报告 4339 这是一个自定义值,仅记录影响您网站功能的问题,并忽略可能甚至不是错误的通知之类的内容。1000011110011 的每个二进制位置的含义见PHP 错误常量,它是等于 4339 的二进制数。最左边的 1 表示报告任何 E_RECOVERABLE_ERROR。接下来的 0 表示不上报 E_STRICT,(马虎但使用函数式编码时抛出)等等。随意确定您自己的自定义错误报告编号以代替 4339。

显然,您需要为您的开发环境设置不同的设置。如果您的暂存副本在同一台服务器上,或者您无权访问php.ini,则需要在运行时覆盖默认设置。您是否更喜欢将错误转到日志文件,或者您更喜欢立即收到任何错误通知,或者两者兼而有之,这取决于个人喜好。这是一个立即报告您可以插入gc-config.php文件中的所有错误的示例:

@ini_set( 'log_errors', 'Off' );
@ini_set( 'display_errors', 'On' );
define( 'GC_DISABLE_FATAL_ERROR_HANDLER', true );   // 5.2 and later
define( 'GC_DEBUG', true );
define( 'GC_DEBUG_LOG', false );
define( 'GC_DEBUG_DISPLAY', true );

因为gc-config.php不是从缓存文件加载的每个页面视图都加载,所以它是php.ini设置控制 PHP 安装的设置的绝佳位置。如果您无权访问php.ini文件,或者您只想动态更改某些设置,这将非常有用。一个例外是“error_reporting”。当 GC_DEBUG 定义为 true 时,无论您尝试在 gc-config.php 中设置什么,GeChiUI都会将“error_reporting”设置为 E_ALL。如果您确实需要将 ‘error_reporting’ 设置为其他内容,则必须在gc-settings.php加载后完成,例如在插件文件中。

如果您打开错误日志记录,请记住之后删除该文件,因为它通常位于可公开访问的位置,任何人都可以访问您的日志。

这是一个打开 PHP error_logging 并将它们记录到特定文件的示例。如果将 GC_DEBUG 定义为 true,则错误也将保存到此文件中。只需将其放在任何require_once包含命令之上。

@ini_set( 'log_errors', 'On' );
@ini_set( 'display_errors', 'Off' );
@ini_set( 'error_log', '/home/example.com/logs/php_error.log' );
/* 就是这样,停止编辑!快乐的文章。*/

另一个记录错误的例子,正如 Mike Little 在gc-hackers 电子邮件列表中所建议的:

/**
 * 这会将所有错误通知和警告记录到名为 debug.log 的文件中
 * gc-content(如果Apache没有写权限,你可能需要创建
 * 文件优先并设置适当的权限(即使用666))
 */
define( 'GC_DEBUG', true );
define( 'GC_DEBUG_LOG', true );
define( 'GC_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

曼彻斯特GeChiUI用户组Mike Little 的精炼版本:

/**
 * 这会将所有错误通知和警告记录到名为 debug.log 的文件中
 * gc-content 仅当 GC_DEBUG 为真时。如果 Apache 没有写权限,
 * 您可能需要先创建文件并设置适当的权限(即使用666)。
 */
define( 'GC_DEBUG', true ); // Or false
if ( GC_DEBUG ) {
    define( 'GC_DEBUG_LOG', true );
    define( 'GC_DEBUG_DISPLAY', false );
    @ini_set( 'display_errors', 0 );
}

令人困惑的问题是GeChiUI有三 (3) 个常量,看起来它们可以做同样的事情。首先,请记住,如果 GC_DEBUG 为 false,它和其他两个GeChiUIDEBUG 常量不会做任何事情。PHP 指令,无论它们是什么,都将占上风。除了 ‘error_reporting’,如果 GC_DEBUG 被定义为 false,GeChiUI会将其设置为 4983。其次,即使 GC_DEBUG 为真,其他常量也只有在它们也设置为真时才会起作用。如果它们设置为 false,PHP 指令保持不变。例如,如果您的php.ini文件有指令 (‘display_errors’ = ‘On’); 但你有声明define(‘GC_DEBUG_DISPLAY’, false); 在你的gc-config.php文件,即使您试图通过将 GC_DEBUG_DISPLAY 设置为 false 来防止错误,错误仍将显示在界面上,因为这是 PHP 配置的行为。这就是为什么将 PHP 指令设置为您需要的内容非常重要,以防任何相关的 GC 常量设置为 false。为了安全起见,明确设置/定义这两种类型。GC 常量的更详细描述可在GeChiUI中的调试中找到。

对于您的公共生产GeChiUI安装,您可能会考虑将以下内容放在您的gc-config.php文件中,即使它可能部分是多余的:

@ini_set( 'log_errors', 'On' );
@ini_set( 'display_errors', 'Off' );
define( 'GC_DISABLE_FATAL_ERROR_HANDLER', false );   // 5.2 and later
define( 'GC_DEBUG', false );
define( 'GC_DEBUG_LOG', false );
define( 'GC_DEBUG_DISPLAY', false );

默认调试日志文件是 /gc-content/debug.log. 将错误日志放在可公开访问的位置存在安全风险。理想情况下,您的日志文件应该放在您站点的公共根目录之上。如果您不能这样做,至少将日志文件权限设置为 600 并将此条目添加到.htaccessGeChiUI安装根目录中的文件中:

<Files debug.log>
    Order allow,deny
    Deny from all
</Files>

这可以防止任何人通过 HTTP 访问该文件。您始终可以通过 FTP 从服务器检索日志文件来查看日志文件。

增加分配给 PHP 的内存

GC_MEMORY_LIMIT选项允许您指定 PHP 可以使用的最大内存量。如果您收到诸如“允许的 xxxxxx 字节的内存大小已用尽”之类的消息,则可能需要此设置。

此设置仅为GeChiUI增加 PHP 内存,而不是其他应用程序。默认情况下,GeChiUI会尝试将分配给 PHP 的内存增加到/gc-includes/default-constants.php单个站点的 40MB(代码在开头)和多站点的 64MB,因此gc-config.php根据您的设置,设置应该反映高于 40MB 或 64MB 的值。

在使用此功能之前,GeChiUI会自动检查 PHP 分配的内存是否少于输入的值。例如,如果 PHP 已分配 64MB,则无需将此值设置为 64M,因为GeChiUI会在需要时自动使用所有 64MB。

注意:一些主机不允许自动增加 P​​HP 内存限制。在这种情况下,请联系您的主机以增加 PHP 内存限制。此外,许多主机将 PHP 限制设置为 8MB。

将 PHP 内存增加到 64MB

define( 'GC_MEMORY_LIMIT', '64M' );

将 PHP 内存增加到 96MB

define( 'GC_MEMORY_LIMIT', '96M' );

管理任务比通常的操作需要更多的内存。在管理区域时,可以通过定义 GC_MAX_MEMORY_LIMIT 来增加或减少内存。

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

注意:这必须放在 gc-settings.php 包含之前。

缓存

GC_CACHE设置,如果为真,则gc-content/advanced-cache.php执行时包括脚本gc-settings.php

define( 'GC_CACHE', true );

自定义用户和用户元表

CUSTOM_USER_TABLECUSTOM_USER_META_TABLE用于指定不使用GeChiUI通常使用的用户表和用户元表,而是使用这些值/表来存储您的用户信息。

define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' );

注意:即使手动设置了“CUSTOM_USER_META_TABLE”,仍然会为每个数据库创建一个 usermeta 表,并为每个实例提供相应的权限。默认情况下,GeChiUI安装程序将为第一个用户(ID #1)添加权限。您还需要通过插件或自定义功能管理对每个站点的权限。如果未设置,您将遇到权限错误和登录问题。

CUSTOM_USER_TABLE 在您的第一个GeChiUI实例的初始设置期间最容易采用。第一个实例上的定义语句gc-config.php指向gc_users默认存储数据的位置。在第一个站点设置之后,将工作复制gc-config.php到您的下一个实例只需要更改$table_prefix变量。不要使用原始安装已在使用的电子邮件地址。完成设置过程后,使用自动生成的管理员帐户和密码登录。接下来,将您的普通帐户提升为管理员级别并注销管理员。以您自己的身份重新登录,删除管理员帐户并根据需要升级其他用户帐户。

语言和语言目录

GeChiUI 4.0 版允许您更改GeChiUI管理界面中的语言。在管理设置界面中更改语言。转到设置>常规,然后选择站点语言。

GeChiUIv3.9.6 及以下

GCLANG定义语言翻译 (.mo) 文件的名称。GC_LANG_DIR定义 GCLANG .mo 文件所在的目录。如果 GC_LANG_DIR 未定义,GeChiUI会首先查找 gc-content/languages,然后gc-includes/languages查找由 GCLANG 文件定义的 .mo。

define( 'GCLANG', 'de_DE' );
define( 'GC_LANG_DIR', dirname(__FILE__) . 'gechiui/languages' );

要查找 GCLANG 语言代码,请参阅此处。GC Local 列中的代码就是您所需要的。

保存查询以供分析

SAVEQUERIES定义将数据库查询保存到一个数组中,并且可以显示该数组以帮助分析这些查询。该信息保存每个查询、调用它的函数以及该查询执行的时间。注意:这将对您的站点产生性能影响,因此请确保在不调试时将其关闭。

首先,将其添加到gc-config.php文件中:

define( 'SAVEQUERIES', true );

然后在你的主题的页脚放这个:

<?php
if ( current_user_can( 'administrator' ) ) {
    global $gcdb;
    echo "<pre>";
    print_r( $gcdb->queries );
    echo "</pre>";
}
?>

覆盖默认文件权限

FS_CHMOD_DIR和FS_CHMOD_FILE定义语句允许覆盖默认文件权限。这两个变量是针对在suexec下运行的主机导致核心更新功能失败的问题而开发的。如果主机对所有用户文件使用限制性文件权限(例如 400),并拒绝访问设置了组或世界权限的文件,这些定义可以解决问题。

define( 'FS_CHMOD_DIR', ( 0755 & ~ umask() ) );
define( 'FS_CHMOD_FILE', ( 0644 & ~ umask() ) );

提供 setgid 的示例:

define( 'FS_CHMOD_DIR', ( 02755 & ~umask() ) );

注意:“ 0755”和“ 02755 ”是八进制值。八进制值必须以 0 为前缀,并且不使用单引号 (‘) 进行界定。另请参阅:更改文件权限

GeChiUI升级常量

注意:根据需要定义尽可能少的以下常量以纠正您的更新问题。

需要定义这些的最常见原因是:

使用涉及符号链接的特殊安装设置运行的主机。您可能需要定义与路径相关的常量(FTP_BASE、FTP_CONTENT_DIR 和 FTP_PLUGIN_DIR)。通常简单地定义基础就足够了。

某些 PHP 安装附带与某些 FTP 服务器不兼容的 PHP FTP 扩展。在这些罕见的情况下,您可能需要将 FS_METHOD 定义为“ftpsockets”。

以下是GeChiUI更新的有效常量:

  • FS_METHOD强制文件系统方法。它只能是“direct”、“ssh2”、“ftpext”或“ftpsockets”。通常,只有在遇到更新问题时才应更改此设置。如果您更改它并且它没有帮助,请将其更改回来/删除它。在大多数情况下,如果自动选择的方法不起作用,将其设置为 ‘ftpsockets’ 将起作用。
    • (主要偏好)“直接”强制它使用来自 PHP 内部的直接文件 I/O 请求,这会在配置不当的主机上引发安全问题,这会在适当时自动选择。
    • (次要偏好)“ssh2”是强制使用 SSH PHP 扩展(如果已安装)
    • (3rd Preference) “ftpext”是强制使用 FTP PHP Extension for FTP Access,最后
    • (第 4 项偏好)“ftpsockets”利用 PHP Sockets 类进行 FTP 访问。
  • FTP_BASE是GeChiUI安装的“base”(ABSPATH) 文件夹的完整路径。
  • FTP_CONTENT_DIR是GeChiUI安装的 gc-content 文件夹的完整路径。
  • FTP_PLUGIN_DIR是GeChiUI安装的插件文件夹的完整路径。
  • FTP_PUBKEY是 SSH 公钥的完整路径。
  • FTP_PRIKEY是 SSH 私钥的完整路径。
  • FTP_USER是用户 FTP 或 SSH 用户名。这些很可能是相同的,但请为您希望执行的更新类型使用适当的。
  • FTP_PASS是为FTP_USER输入的用户名的密码。如果您使用 SSH 公钥认证,则可以省略。
  • FTP_HOST是 SSH/FTP 服务器的主机名:端口组合。默认的FTP端口是21,默认的SSH端口是22,这些就不用说了。
  • FTP_SSL如果底层传输支持,则SSL 连接为 TRUE (并非在所有服务器上都可用)。这适用于“安全 FTP”,而不适用于 SSH SFTP。
define( 'FS_METHOD', 'ftpext' );
define( 'FTP_BASE', '/path/to/gechiui/' );
define( 'FTP_CONTENT_DIR', '/path/to/gechiui/gc-content/' );
define( 'FTP_PLUGIN_DIR ', '/path/to/gechiui/gc-content/plugins/' );
define( 'FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub' );
define( 'FTP_PRIKEY', '/home/username/.ssh/id_rsa' );
define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_HOST', 'ftp.example.org' );
define( 'FTP_SSL', false );

某些配置应将 FTP_HOST 设置为 localhost 以避免在尝试更新插件或 GC 本身时出现 503 问题。

启用 SSH 升级访问

使用 SSH2 升级有两种方法。

首先是使用SSH SFTP Updater Support 插件。第二种是使用内置的 SSH2 升级程序,需要安装 pecl SSH2 扩展。

要安装 pecl SSH2 扩展,您需要发出类似于以下的命令或与您的网络托管服务提供商联系以安装它:

pecl install ssh2

安装 pecl ssh2 扩展后,您需要修改 PHP 配置以自动加载此扩展。

pecl 在大多数 linux 发行版中由 pear 包提供。在 Redhat/Fedora/CentOS 中安装 pecl:

yum -y install php-pear

在 Debian/Ubuntu 中安装 pecl:

apt-get install php-pear

建议使用不受密码保护的私钥。有许多报告称密码保护的私钥无法正常工作。如果您决定尝试使用密码短语保护的私钥,您需要将私钥密码短语输入为 FTP_PASS,或者在安装更新时将其输入到提供的凭据字段的“密码”字段中。

替代 Cron

可能有理由在 GC 中使用替代 Cron。最常见的情况是,如果预定的文章没有按预期发布。这种替代方法使用重定向方法。当 cron 需要运行时,用户的浏览器会得到一个重定向,以便他们立即返回站点,同时 cron 继续在他们刚刚断开的连接中运行。这种方法有一定的风险,因为它依赖于非原生的GeChiUI服务。

define( 'ALTERNATE_GC_CRON', true );

禁用 Cron 和 Cron 超时

通过将 DISABLE_GC_CRON 设置为 true 来完全禁用 cron。

define( 'DISABLE_GC_CRON', true );

确保 cron 进程每 GC_CRON_LOCK_TIMEOUT 秒不能运行一次以上。

define( 'GC_CRON_LOCK_TIMEOUT', 60 );

附加定义的常量

以下是可以定义的其他常量。除非首先尝试了其他方法,否则这些可能不应该设置。如果您有一个不寻常的域设置,Cookie 定义会特别有用。

define( 'COOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'home' ) . '/' ) );
define( 'SITECOOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'siteurl' ) . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'gc-admin' );
define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', GC_PLUGIN_URL ) );
define( 'TEMPLATEPATH', get_template_directory() );
define( 'STYLESHEETPATH', get_stylesheet_directory() );

清空垃圾箱

此常量控制GeChiUI从垃圾箱中永久删除文章、页面、附件和评论之前的天数。默认值为 30 天:

define( 'EMPTY_TRASH_DAYS', 30 ); // 30 days

要禁用垃圾,请将天数设置为零。

define( 'EMPTY_TRASH_DAYS', 0 ); // Zero days

注意:当有人使用此设置单击“永久删除”时,GeChiUI不会要求确认。

自动数据库优化

有自动数据库修复支持,您可以通过将以下定义添加到gc-config.php文件来启用它。

注意:这应该只在需要时启用,并在问题解决后禁用。启用后,用户无需登录即可访问该功能,因为其主要目的是修复损坏的数据库,而当数据库损坏时用户通常无法登录。

define( 'GC_ALLOW_REPAIR', true );

该脚本可以在{$your_site}/gc-admin/maint/repair.php.

DO_NOT_UPGRADE_GLOBAL_TABLES 

DO_NOT_UPGRADE_GLOBAL_TABLES定义防止dbDelta () 和升级函数对全局表执行昂贵的查询。

具有大型全局表(尤其是用户和 usermeta)的站点,以及与 bbPress 和其他GeChiUI安装共享用户表的站点,可以通过将DO_NOT_UPGRADE_GLOBAL_TABLES定义为 true 来防止升级在升级期间更改这些表。由于 ALTER 或无限制的 DELETE 或 UPDATE 可能需要很长时间才能完成,因此大型站点通常希望避免将这些作为升级的一部分运行,以便他们自己处理。此外,如果安装在多个 bbPress 和GeChiUI安装之间共享用户表,您可能希望一个站点成为升级主机。

  define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true );

查看所有定义的常量

PHP 有一个函数,它返回一个包含所有当前定义的常量及其值的数组。

print_r( @get_defined_constants() );

禁用插件和主题文件编辑器

有时您可能希望禁用插件或主题文件编辑器,以防止过分热心的用户能够编辑敏感文件并可能导致站点崩溃。如果黑客获得对特权用户帐户的访问权限,禁用这些还可以提供额外的安全层。

define( 'DISALLOW_FILE_EDIT', true );

注意:某些插件的功能可能会受到current_user_can('edit_plugins')在其代码中使用的影响。插件作者应避免检查此功能,或至少检查是否设置了此常量并显示适当的错误消息。请注意,如果插件不起作用,这可能是原因。

禁用插件和主题更新和安装

这将阻止用户从GeChiUI管理区域使用插件和主题安装/更新功能。设置此常量也会禁用插件和主题文件编辑器(即您不需要设置 DISALLOW_FILE_MODS 和 DISALLOW_FILE_EDIT,因为其本身的 DISALLOW_FILE_MODS 将具有相同的效果)。

define( 'DISALLOW_FILE_MODS', true );

管理员和登录需要 SSL

注意: GeChiUI 4.0 版已弃用 FORCE_SSL_LOGIN。请使用 FORCE_SSL_ADMIN。

FORCE_SSL_ADMIN 用于当您想要保护登录和管理区域时,密码和 cookie 都不会以明文形式发送。有关更多详细信息,另请参见Administration_Over_SSL

define( 'FORCE_SSL_ADMIN', true );

阻止外部 URL 请求

通过将 GC_HTTP_BLOCK_EXTERNAL 定义为 true 来阻止外部 URL 请求,这将只允许 localhost 和您的文章发出请求。常量 GC_ACCESSIBLE_HOSTS 将允许其他主机通过请求。GC_ACCESSIBLE_HOSTS 常量的格式是逗号分隔的允许主机名列表,支持通配符域,例如 *.www.gechiui.com 将允许联系 www.gechiui.com 的所有子域。

define( 'GC_HTTP_BLOCK_EXTERNAL', true );
define( 'GC_ACCESSIBLE_HOSTS', 'api.www.gechiui.com,*.github.com' );

禁用GeChiUI自动更新

站点不自动更新可能是有原因的,例如自定义或主机提供的更新。它也可以在主要版本发布之前完成,以便在允许在生产站点上进行更新之前有时间在开发或暂存环境中进行测试。

define( 'AUTOMATIC_UPDATER_DISABLED', true );

禁用GeChiUI核心更新

操作核心更新的最简单方法是使用 GC_AUTO_UPDATE_CORE 常量:

# Disable all core updates:
 define( 'GC_AUTO_UPDATE_CORE', false );

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

 # Enable core updates for minor releases (default):
 define( 'GC_AUTO_UPDATE_CORE', 'minor' );

清理图像编辑

默认情况下,GeChiUI会在您每次编辑图像时创建一组新图像,当您恢复原始图像时,它会将所有编辑保留在服务器上。将 IMAGE_EDIT_OVERWRITE 定义为 true 会改变这种行为。只创建了一组图像编辑,当您恢复原始图像时,这些编辑将从服务器中删除。

define( 'IMAGE_EDIT_OVERWRITE', true );

保存前仔细检查

请务必检查您输入的上述任何值周围的前导和/或尾随空格,并且不要删除单引号!

在保存文件之前,请务必仔细检查您是否不小心删除了参数值周围的任何单引号。确保文件中结束 PHP 标记之后没有任何内容。文件中的最后一件事应该是?>,仅此而已。空间不足。

要保存文件,请选择文件 > 另存为 > gc-config.php并将文件保存在GeChiUI安装的根目录中。将文件上传到您的网络服务器,您就可以安装GeChiUI!

发表评论

您的电子邮箱不会被公开。 必填项已用*标注