Last active
August 29, 2015 14:09
-
-
Save fleeto/9ccb49882bec203a72c3 to your computer and use it in GitHub Desktop.
Drupal settings.php汉化
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @file | |
* Drupal站点配置文件 | |
* | |
* 注意: | |
* | |
* 这个文件应该会被Drupal安装器设置为只读。 | |
* 如果对该文件进行编辑,编辑完成后必须重新设置为只读,否则将成为安全隐患。 | |
* | |
* 这个配置文件会依照下面的规则进行载入。 | |
* 然而如果存在多站点别名文件sites/sites.php,则会被优先载入, | |
* $sites中的别名会覆盖缺省的目录规则。 | |
* 参考sites/example.sites.php获取更多别名相关的内容。 | |
* | |
* 配置目录的获取: | |
* 从左到右剥掉站点的主机名 | |
* 从右向左去掉路径名 | |
* 找到一个文件名就会忽略其他的配置文件。 | |
* 如果没找到,则使用缺省的sites/default。 | |
* | |
* 例如一个安装在http://www.drupal.org:8080/mysite/test/的站点, | |
* 会在下面的目录搜索settings.php文件: | |
* | |
* - sites/8080.www.drupal.org.mysite.test | |
* - sites/www.drupal.org.mysite.test | |
* - sites/drupal.org.mysite.test | |
* - sites/org.mysite.test | |
* | |
* - sites/8080.www.drupal.org.mysite | |
* - sites/www.drupal.org.mysite | |
* - sites/drupal.org.mysite | |
* - sites/org.mysite | |
* | |
* - sites/8080.www.drupal.org | |
* - sites/www.drupal.org | |
* - sites/drupal.org | |
* - sites/org | |
* | |
* - sites/default | |
* | |
* 注意如果安装在一个非标准端口号上,这个端口会在前缀中体现,例如 | |
* http://www.drupal.org:8080/mysite/test/ | |
* 可以在 | |
* sites/8080.www.drupal.org.mysite.test/载入。 | |
* | |
* @see example.sites.php | |
* @see conf_path() | |
*/ | |
/** | |
* 数据库配置: | |
* | |
* $database数组指定了Drupal正在以及可能使用的数据库连接。 | |
* Drupal可以在一次请求中连接多个数据库,包括多种不同的数据库。 | |
* | |
* @code | |
* array( | |
* 'driver' => 'mysql', | |
* 'database' => 'databasename', | |
* 'username' => 'username', | |
* 'password' => 'password', | |
* 'host' => 'localhost', | |
* 'port' => 3306, | |
* 'prefix' => 'myprefix_', | |
* 'collation' => 'utf8_general_ci', | |
* ); | |
* @endcode | |
* | |
* "driver" 属性用于描述该数据库所使用的Drupal数据库驱动。一般来说他的取值等同于数据库类型,例如mysql或者sqlite,当然,也有例外。 | |
* 其他的属性依赖于驱动。对SQLite来说,必须指定一个Web服务器可访问的数据库文件全名。 | |
* 其他数据库一般要指定用户名、密码、地址以及数据库名称。 | |
* | |
* 缺省情况下,所有支持事务的数据库类型都会默认打开事务支持,其中包含MySQL。 | |
* 设置'transactions'键为FALSE,可以显式的关闭这一特性。 | |
* 注意MySQL的某些配置,例如MyISAM引擎,是不支持事务的,所以即使开启了事务,也不会生效。 | |
* 如果事务特性造成了站点崩溃,可以尝试关闭事务开关。 | |
* | |
* 每个database都可以指定多个'目标'数据库。 | |
* 一个目标数据库允许Drupal尝试把某些查询发送到不同的数据库,如果失败的话,会回到缺省连接。 | |
* 这对主从复制结构的数据库很有用,Drupal会在恰当时机尝试连接到从服务器,如果从服务器不可用,则会回退到主服务器。 | |
* | |
* 一般的配置方式如下所示: | |
* | |
* @code | |
* $databases['default']['default'] = $info_array; | |
* $databases['default']['slave'][] = $info_array; | |
* $databases['default']['slave'][] = $info_array; | |
* $databases['extra']['default'] = $info_array; | |
* @endcode | |
* | |
* 在上面的例子中,$info_array是一个上面描述的数组。 | |
* 第一行用第二维的'default'设置主服务器为缺省服务器。 | |
* 第二三行创建了从数据库数组。Drupal会在请求中进行随机选择。 | |
* 最后一样创建了一个新的名为"extra"的数据库 | |
* | |
* 如果是单服务器配置,下面的内容就足够了。 | |
* | |
* @code | |
* $databases['default']['default'] = array( | |
* 'driver' => 'mysql', | |
* 'database' => 'databasename', | |
* 'username' => 'username', | |
* 'password' => 'password', | |
* 'host' => 'localhost', | |
* 'prefix' => 'main_', | |
* 'collation' => 'utf8_general_ci', | |
* ); | |
* @endcode | |
* | |
* 可以利用"prefix"为部分或全部数据表设置前缀。 | |
* 如果prefix有值,数据表名称会在前面加上这个前缀。 | |
* 所以prefix必须是mysql允许的字符构成,一般就是数字、字母和下划线。 | |
* 如果不指定前缀,则赋值为“”。 | |
* | |
* 要让所有的数据库名字具有同一个前缀,设置"prefix"为字符串: | |
* | |
* @code | |
* 'prefix' => 'main_', | |
* @endcode | |
* | |
* 要让特定表使用特定前缀,可以将"prefix"赋值为数组。 | |
* 数组的键为表名,值为前缀。 | |
* 'default'是必须的,代表所有未特别制定前缀的其他表的前缀。 | |
* 例如: | |
* | |
* @code | |
* 'prefix' => array( | |
* 'default' => 'main_', | |
* 'users' => 'shared_', | |
* 'sessions' => 'shared_', | |
* 'role' => 'shared_', | |
* 'authmap' => 'shared_', | |
* ), | |
* @endcode | |
* | |
* 还可以使用schema/database作为前缀。 | |
* 如果Drupal使用用了非缺省的数据库,或者用户需要同时访问几个database,这种配置就很有用了。 | |
* 例如: | |
* | |
* @code | |
* 'prefix' => array( | |
* 'default' => 'main.', | |
* 'users' => 'shared.', | |
* 'sessions' => 'shared.', | |
* 'role' => 'shared.', | |
* 'authmap' => 'shared.', | |
* ); | |
* @endcode | |
* | |
* 注意:MySQL和SQLite的定义中,Schema就是一个数据库。 | |
* | |
* 高级用户可以像PDO连接设置那样,添加或覆盖连接到数据库服务器时执行的命令。 | |
* 例如,增大MySQL的max_join_size这一系统变量,并把超时时间降低到5秒钟: | |
* | |
* @code | |
* $databases['default']['default'] = array( | |
* 'init_commands' => array( | |
* 'big_selects' => 'SET SQL_BIG_SELECTS=1', | |
* ), | |
* 'pdo' => array( | |
* PDO::ATTR_TIMEOUT => 5, | |
* ), | |
* ); | |
* @endcode | |
* | |
* 警告:缺省值都是为保障数据库的通用性设置的。 | |
* 修改缺省值可能会导致不期望的结果,甚至引起数据丢失。 | |
* | |
* @see DatabaseConnection_mysql::__construct | |
* @see DatabaseConnection_pgsql::__construct | |
* @see DatabaseConnection_sqlite::__construct | |
* | |
* 数据库配置格式: | |
* | |
* @code | |
* $databases['default']['default'] = array( | |
* 'driver' => 'mysql', | |
* 'database' => 'databasename', | |
* 'username' => 'username', | |
* 'password' => 'password', | |
* 'host' => 'localhost', | |
* 'prefix' => '', | |
* ); | |
* $databases['default']['default'] = array( | |
* 'driver' => 'pgsql', | |
* 'database' => 'databasename', | |
* 'username' => 'username', | |
* 'password' => 'password', | |
* 'host' => 'localhost', | |
* 'prefix' => '', | |
* ); | |
* $databases['default']['default'] = array( | |
* 'driver' => 'sqlite', | |
* 'database' => '/path/to/databasefilename', | |
* ); | |
* @endcode | |
*/ | |
$databases = array(); | |
/** | |
* update.php的访问限制 | |
* | |
* 如果你没有登录,或者登录账号并非初始的管理员,也不具备“管理软件更新”的权限。 | |
* 在这种情况下要更新系统,就需要修改下面的语句。 | |
* 把FALSE改为TRUE就可以禁用访问限制。 | |
* 在更新完成之后,需要确认把TRUE改回FALSE。 | |
* | |
*/ | |
$update_free_access = FALSE; | |
/** | |
* | |
* 用于一次性登录以及取消的连接,form token等的SALT | |
* | |
* 这一变量会在系统安装时被初始化为一个随机值。 | |
* 如果这个值发生变化,则所有一次性登录连接都会失效。 | |
* 如果站点被部署到集群环境下,务必保证各个服务器的这一变量完全一致。 | |
* 如果这个值为空,则会使用数据库登录凭证的序列化结果作为缺省值。 | |
* | |
* 为了增强安全性,可以从一个Drupal目录之外的文件来读取这个配置, | |
* 这一文件的保存也应该同Drupal和数据库的备份分开。 | |
* | |
* 例如: | |
* $drupal_hash_salt = file_get_contents('/home/example/salt.txt'); | |
* | |
*/ | |
$drupal_hash_salt = ''; | |
/** | |
* Base URL (可选). | |
* | |
* 如果Drupal在你的站点上生成了错误的网址,例如HTML头部的CSS/JS文件,或者页面菜单的连接。 | |
* 可以启用这一选项,取值为Drupal安装URL。 | |
* | |
* 你可能还想强制用户使用一个指定的域。 | |
* 可以在.htaccess文件来获取更多信息 | |
* | |
* 例如: | |
* $base_url = 'http://www.example.com'; | |
* $base_url = 'http://www.example.com:8888'; | |
* $base_url = 'http://www.example.com/drupal'; | |
* $base_url = 'https://www.example.com:8888/drupal'; | |
* | |
* 不要在末尾加入斜线,Drupal会自动添加。 | |
* | |
*/ | |
# $base_url = 'http://www.example.com'; // NO trailing slash! | |
/** | |
* PHP设置: | |
* | |
* 这里允许设置的范围,包括这些内容是否可以在运行时进行设置,请阅读PHP文档: | |
* http://www.php.net/manual/ini.list.php | |
* 参考include/bootstrap.inc中的drupal_environment_initialize(),这里规定了必须进行设置的内容。 | |
* .htaccess文件中包含了非运行时的设置内容。 | |
* 这里的设置不要重复,以免发生冲突。 | |
* | |
*/ | |
/** | |
* | |
* 有些Linux发行版(比如Debian)会禁用PHP的垃圾搜集(gc)。 | |
* 而Drupal需要垃圾收集特性用于Session清理,所以这里需要特别设置。 | |
* | |
*/ | |
ini_set('session.gc_probability', 1); | |
ini_set('session.gc_divisor', 100); | |
/** | |
* | |
* Session的存活期,单位是秒。 | |
* 用户最后一次访问活动会话的后,到Session被垃圾收集删除的时间。 | |
* 当Session被删除,用户会被登出,用户的$_SESSION中保存的内容也会被废弃。 | |
* | |
*/ | |
ini_set('session.gc_maxlifetime', 200000); | |
/** | |
* Cooke存活期,单位是秒。 | |
* 也就是Session的创建到Cookie过期的时间段,也就是浏览器丢弃Cookie的时间。 | |
* 如果设置为“0”,则代表“直到浏览器关闭”。 | |
*/ | |
ini_set('session.cookie_lifetime', 2000000); | |
/** | |
* | |
* 如果存在如下情况: | |
* 用户发布了大文本,结果展示的内容被截断,但是仍然可以编辑。 | |
* 这可能是因为Drupal的输出过滤器运行内存不足无法处理。 | |
* | |
* 遇到这种情况,可以考虑启用下面两行代码,增大这两个变量的值,更多信息可参考: | |
* http://php.net/manual/pcre.configuration.php. | |
* | |
*/ | |
# ini_set('pcre.backtrack_limit', 200000); | |
# ini_set('pcre.recursion_limit', 200000); | |
/** | |
* | |
* Drupal自动为站点生成一个基于完整域名的唯一的Session Cookie名。 | |
* 如果你有多个域名指向同一个Drupal站点, | |
* 你可以把所有访问重定向到单独的一个域名(参见.htaccess中的注释); | |
* 或者启用下面的行,指定他们共享的父域名。 | |
* 这样可以保障用户登录的Session能在各个域中都有效。 | |
* 遵循RFC 2109的规定,取值必须以“.”开头。 | |
* | |
*/ | |
# $cookie_domain = '.example.com'; | |
/** | |
* 变量覆盖: | |
* | |
* 这一段可以用来覆盖变量表中的内容。 | |
* 这个特性很少用到。 | |
* 对于vhost或者目录来说这个配置比较有用。 | |
* 变量表中的所有内容都可以在这里设置为新的值。 | |
* 另外,这里指定的变量值,在管理界面的修改是无效的。 | |
* | |
* 例如: | |
* - site_name: 缺省的站点名称。 | |
* - theme_default: 该站点的缺省主题。 | |
* - anonymous: 匿名用户的可读名称。 | |
* | |
*/ | |
# $conf['site_name'] = 'My Drupal site'; | |
# $conf['theme_default'] = 'garland'; | |
# $conf['anonymous'] = 'Visitor'; | |
/** | |
* | |
* 可以为离线页面设置一个主题。 | |
* 当站点被设置为维护模式,或者数据库离线时,这个配置就有用了。 | |
* 模板文件必须拷贝到主题中。名称为'modules/system/maintenance-page.tpl.php'。 | |
* 注意:这一设置对更新和安装不起作用。 | |
* | |
*/ | |
# $conf['maintenance_theme'] = 'bartik'; | |
/** | |
* 反向代理配置: | |
* 反向代理服务器经常用于增强大负载网站的性能,同时提供额外的站点缓存、安全等好处。 | |
* 如果Drupal部署反向代理服务器之后,Drupal的日志、统计以及访问控制系统都需要获取真实的用户IP。 | |
* 通常反向代理服务器会在请求中添加X-Forwarded-For头,用于传递客户IP地址。 | |
* 然而,HTTP头对于客户端欺诈来说是很脆弱的,有些客户端能够直接生成这个Header信息。 | |
* 所以,Drupal需要在$conf['reverse_proxy_address']中设置所有的代理服务器地址。 | |
* | |
* 激活这个设置让Drupal可以从X-Forwarded-For头中获取用户的IP地址。 | |
* 这个Header的名字也可以通过$conf['reverse_proxy_header']修改为其他名称。 | |
* 如果你不确定是否使用了反向代理,不知道这个选项的含义,或者站点托管在共享主机上,就不必设置。 | |
* | |
* 启用这个配置,就必须把每个反向代理服务器的地址都保存在$conf['reverse_proxy_addresses']中。 | |
* 如果你的环境中无法获取一个完整的反向代理服务器列表(例如CDN)。可以在settings.php中直接设置$_SERVER['REMOTE_ADDR']。 | |
* 这意味着可能发生IP伪造。 | |
*/ | |
# $conf['reverse_proxy'] = TRUE; | |
/** | |
* 如果$conf['reverse_proxy']设置为TRUE,这里必须列出所有的代理服务器 | |
*/ | |
# $conf['reverse_proxy_addresses'] = array('a.b.c.d', ...); | |
/** | |
* 如果你用于传递IP的HTTP头不是X-Forwarded-For,则需要在这里进行设置。 | |
*/ | |
# $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP'; | |
/** | |
* 页面缓存: | |
* | |
* 缺省情况下,Drupal会为匿名用户的访问发送一个“Vary: Cookie”的HTTP头。 | |
* 这会指示HTTP代理服务器,如果用户在访问一个被缓存页面时,如果他发送了同最初访问缓存页面的用户同样的Cookie头, | |
* 可以无需联系Web服务器,直接从本地缓存中返回一个页面。 | |
* 如果没有“Vary Cookie”,登录用户也会以同样的方式从缓存中获取页面。 | |
* 如果站点绝大多数用户都是匿名用户,极少有编辑和管理活动,这个Vary头可以省略。 | |
* 这对HTTP代理服务器的缓存有很好的帮助(也包括反向代理), | |
* 也就是说,开启这一配置,即使用户发送了不同的Cookie,仍然会从代理服务器缓存中获取内容。 | |
* 然而这样的话,登录用户应该直接访问服务器(也就是说不通过代理和反向代理服务器),以防从缓存中获取不恰当的内容。。 | |
* | |
*/ | |
# $conf['omit_vary_cookie'] = TRUE; | |
/** | |
* CSS/JS 聚合文件压缩: | |
* | |
* 缺省情况下,当CSS和JS聚合以及简洁连接被启用的时候,Drupal会保存gzip压缩的聚合文件。 | |
* 如果这个文件可用,则.htaccess中的rewrite规则会把这个文件传送给支持gzip压缩内容的浏览器。 | |
* 这使得用户能够更快的载入页面,并降低服务器压力。 | |
* 如果你用的不是Apache,或者前端部署了具备缓存和压缩能力的反向代理服务器,可能就要启用下面两行代码, | |
* 阻止保存gzip文件。 | |
* | |
*/ | |
# $conf['css_gzip_compression'] = FALSE; | |
# $conf['js_gzip_compression'] = FALSE; | |
/** | |
* 块缓存: | |
* | |
* 实现Block的模块会指定该Block的缓存策略,可能导致块缓存同node access并不兼容。 | |
* 缺省情况下,Drupal会在一个或者更多模块实现了hook_node_grants()的情况下,禁用块缓存。 | |
* 如果认为块缓存很安全,希望跳过这个限制,启用下面这行代码。 | |
* | |
*/ | |
# $conf['block_cache_bypass_node_grants'] = TRUE; | |
/** | |
* 字符串覆盖: | |
* 不管站点是否启用了Locale模块,都可以在这里覆盖指定的字符串。 | |
* 这个功能让用户可以改变少量的缺省英文界面字符串。 | |
* | |
*/ | |
# $conf['locale_custom_strings_en'][''] = array( | |
# 'forum' => 'Discussion board', | |
# '@count min' => '@count minutes', | |
# ); | |
/** | |
* | |
* IP屏蔽: | |
* 使用这个设置,可以跨过数据库中对屏蔽IP地址的查询。 | |
* 缺省情况下,Drupal在每次页面请求的过程中,不管是登录还是未登录用户,都会查询{blocked_ips}表。 | |
* 这个表让管理员可以通过管理界面管理IP地址的屏蔽,并且在所有模块载入之前生效。 | |
* 然而在重负载的网站中,你可能想声调这一步,这个配置允许你在某些缓存配置下,对匿名用户跳过数据库访问。 | |
* | |
* 如果使用这一设置,需要把所有要屏蔽的IP地址加入到这里。数组的每一项都是一个IP。 | |
* | |
* 如果给这个配置赋值为空数组,则代表着禁用IP屏蔽功能。 | |
* | |
*/ | |
# $conf['blocked_ips'] = array( | |
# 'a.b.c.d', | |
# ); | |
/** | |
* 快速404页面: | |
* | |
* Drupal能够生成完整主题渲染的404页面。然而,这类相应中的一些图片或者其他资源可能没必要显示给用户。 | |
* 这造成了对带宽和服务器负载的浪费。 | |
* | |
* 下面的选项,在URL符合下面模式的情况下,生成一个简单的快速的404页面: | |
* - 404_fast_paths_exclude: 一个用于描述排除某些路径的正则表达式,例如image styles生成、或者动态大小的图片。 | |
* 如要添加更多排除项目,可以添加“|path”到表达式中。 | |
* - 404_fast_paths: 正则表达式,符合这一模式的URL将直接返回快速的简单的404页面,而不是主题渲染的页面。 | |
* 如果不存在任何'htm'或者'html'的别名,可以在表达式中添加“|s?html?”。 | |
* - 404_fast_html: 404页面的HTML内容。 | |
* | |
*/ | |
$conf['404_fast_paths_exclude'] = '/\/(?:styles)\//'; | |
$conf['404_fast_paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; | |
$conf['404_fast_html'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>'; | |
/** | |
* | |
* 缺省情况下,页面请求在访问一个不存在的文件, | |
* 而且网址符合'404_fast_paths'的条件,而且不在'404_fast_paths_exclude'的范围中的场景中, | |
* 会返回一个快速的404页面。同时404错误也会被记录到Drupal日志系统中。 | |
* | |
* 启用下面的语句,让你可以更早的(在settings刚载入时)返回404页面。这会降低404情况下的服务器负载, | |
* 并且不记录错误到日志中去。 | |
* 为了防止有效的页面例如image style和其他生成内容返回404,必须把他们加入到'404_fast_paths_exclude'中。 | |
* 在启用这个项目之前,务必确认对这个功能有了真正的了解。 | |
* | |
*/ | |
# drupal_fast_404(); | |
/** | |
* 外部代理服务器设置: | |
* | |
* 如果你的服务器必须通过Web服务器访问外部网络,则可以在这里输入代理服务器配置。 | |
* 目前这里仅支持基于用户名和密码的基础验证。 | |
* 如果代理服务器不对User-Agent头进行限制,proxy_user_agent可以设置为NULL。 | |
* proxy_exceptions用于设置无需代理可以直接访问的站点。 | |
* | |
*/ | |
# $conf['proxy_server'] = ''; | |
# $conf['proxy_port'] = 8080; | |
# $conf['proxy_username'] = ''; | |
# $conf['proxy_password'] = ''; | |
# $conf['proxy_user_agent'] = ''; | |
# $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost'); | |
/** | |
* 认证的文件系统操作: | |
* | |
* Update Manager模块提供了一种机制,让管理员可以安全的在站点上利用Web界面安装缺失的更新。 | |
* 在安全的服务器上,Update Manager在执行升级操作之前,需要管理员提供SSH或者FTP登陆凭据。 | |
* 让站点能够使用这些登陆凭据来访问整个Drupal站点的文件,而不受限于web server的运行用户。 | |
* | |
* 如果webserver用户就是Drupal文件的拥有者,则无需SSH或FTP凭证(注意这类主机通畅是托管在共享环境中,天生的安全性低)。 | |
* | |
* 有些站点可能希望关闭上面的功能,只允许通过SSH或者FTP进行升级。 | |
* 这个设置会关闭所有认证文件更新的相关功能。 | |
* | |
*/ | |
# $conf['allow_authorize_operations'] = FALSE; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment