Drupal7的Settings.php汉化版,译者:携剑看山
原文链接:https://drupal.fleeto.us/content/settingsphp
<?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;
标签
Drupal 版本