5 * Drupal site-specific configuration file.
8 * This file may have been set to read-only by the Drupal installation program.
9 * If you make changes to this file, be sure to protect it again after making
10 * your modifications. Failure to remove write permissions to this file is a
13 * The configuration file to be loaded is based upon the rules below. However
14 * if the multisite aliasing file named sites/sites.php is present, it will be
15 * loaded, and the aliases in the array $sites will override the default
16 * directory rules below. See sites/example.sites.php for more information about
19 * The configuration directory will be discovered by stripping the website's
20 * hostname from left to right and pathname from right to left. The first
21 * configuration file found will be used and any others will be ignored. If no
22 * other configuration file is found then the default configuration file at
23 * 'sites/default' will be used.
25 * For example, for a fictitious site installed at
26 * http://www.drupal.org:8080/mysite/test/, the 'settings.php' file is searched
27 * for in the following directories:
29 * - sites/8080.www.drupal.org.mysite.test
30 * - sites/www.drupal.org.mysite.test
31 * - sites/drupal.org.mysite.test
32 * - sites/org.mysite.test
34 * - sites/8080.www.drupal.org.mysite
35 * - sites/www.drupal.org.mysite
36 * - sites/drupal.org.mysite
39 * - sites/8080.www.drupal.org
40 * - sites/www.drupal.org
46 * Note that if you are installing on a non-standard port number, prefix the
47 * hostname with that number. For example,
48 * http://www.drupal.org:8080/mysite/test/ could be loaded from
49 * sites/8080.www.drupal.org.mysite.test/.
51 * @see example.sites.php
58 * The $databases array specifies the database connection or
59 * connections that Drupal may use. Drupal is able to connect
60 * to multiple databases, including multiple types of databases,
61 * during the same request.
63 * Each database connection is specified as an array of settings,
64 * similar to the following:
67 * 'driver' => 'mysql',
68 * 'database' => 'databasename',
69 * 'username' => 'username',
70 * 'password' => 'password',
71 * 'host' => 'localhost',
73 * 'prefix' => 'myprefix_',
74 * 'collation' => 'utf8_general_ci',
78 * The "driver" property indicates what Drupal database driver the
79 * connection should use. This is usually the same as the name of the
80 * database type, such as mysql or sqlite, but not always. The other
81 * properties will vary depending on the driver. For SQLite, you must
82 * specify a database file name in a directory that is writable by the
83 * webserver. For most other drivers, you must specify a
84 * username, password, host, and database name.
86 * Transaction support is enabled by default for all drivers that support it,
87 * including MySQL. To explicitly disable it, set the 'transactions' key to
89 * Note that some configurations of MySQL, such as the MyISAM engine, don't
90 * support it and will proceed silently even if enabled. If you experience
91 * transaction related crashes with such configuration, set the 'transactions'
94 * For each database, you may optionally specify multiple "target" databases.
95 * A target database allows Drupal to try to send certain queries to a
96 * different database if it can but fall back to the default connection if not.
97 * That is useful for master/slave replication, as Drupal may try to connect
98 * to a slave server when appropriate and if one is not available will simply
99 * fall back to the single master server.
101 * The general format for the $databases array is as follows:
103 * $databases['default']['default'] = $info_array;
104 * $databases['default']['slave'][] = $info_array;
105 * $databases['default']['slave'][] = $info_array;
106 * $databases['extra']['default'] = $info_array;
109 * In the above example, $info_array is an array of settings described above.
110 * The first line sets a "default" database that has one master database
111 * (the second level default). The second and third lines create an array
112 * of potential slave databases. Drupal will select one at random for a given
113 * request as needed. The fourth line creates a new database with a name of
116 * For a single database configuration, the following is sufficient:
118 * $databases['default']['default'] = array(
119 * 'driver' => 'mysql',
120 * 'database' => 'databasename',
121 * 'username' => 'username',
122 * 'password' => 'password',
123 * 'host' => 'localhost',
124 * 'prefix' => 'main_',
125 * 'collation' => 'utf8_general_ci',
129 * For handling full UTF-8 in MySQL, including multi-byte characters such as
130 * emojis, Asian symbols, and mathematical symbols, you may set the collation
131 * and charset to "utf8mb4" prior to running install.php:
133 * $databases['default']['default'] = array(
134 * 'driver' => 'mysql',
135 * 'database' => 'databasename',
136 * 'username' => 'username',
137 * 'password' => 'password',
138 * 'host' => 'localhost',
139 * 'charset' => 'utf8mb4',
140 * 'collation' => 'utf8mb4_general_ci',
143 * When using this setting on an existing installation, ensure that all existing
144 * tables have been converted to the utf8mb4 charset, for example by using the
145 * utf8mb4_convert contributed project available at
146 * https://www.drupal.org/project/utf8mb4_convert, so as to prevent mixing data
147 * with different charsets.
148 * Note this should only be used when all of the following conditions are met:
149 * - In order to allow for large indexes, MySQL must be set up with the
150 * following my.cnf settings:
152 * innodb_large_prefix=true
153 * innodb_file_format=barracuda
154 * innodb_file_per_table=true
155 * These settings are available as of MySQL 5.5.14, and are defaults in
156 * MySQL 5.7.7 and up.
157 * - The PHP MySQL driver must support the utf8mb4 charset (libmysqlclient
158 * 5.5.3 and up, as well as mysqlnd 5.0.9 and up).
159 * - The MySQL server must support the utf8mb4 charset (5.5.3 and up).
161 * You can optionally set prefixes for some or all database table names
162 * by using the 'prefix' setting. If a prefix is specified, the table
163 * name will be prepended with its value. Be sure to use valid database
164 * characters only, usually alphanumeric and underscore. If no prefixes
165 * are desired, leave it as an empty string ''.
167 * To have all database names prefixed, set 'prefix' as a string:
169 * 'prefix' => 'main_',
171 * To provide prefixes for specific tables, set 'prefix' as an array.
172 * The array's keys are the table names and the values are the prefixes.
173 * The 'default' element is mandatory and holds the prefix for any tables
174 * not specified elsewhere in the array. Example:
177 * 'default' => 'main_',
178 * 'users' => 'shared_',
179 * 'sessions' => 'shared_',
180 * 'role' => 'shared_',
181 * 'authmap' => 'shared_',
184 * You can also use a reference to a schema/database as a prefix. This may be
185 * useful if your Drupal installation exists in a schema that is not the default
186 * or you want to access several databases from the same code base at the same
191 * 'default' => 'main.',
192 * 'users' => 'shared.',
193 * 'sessions' => 'shared.',
194 * 'role' => 'shared.',
195 * 'authmap' => 'shared.',
198 * NOTE: MySQL and SQLite's definition of a schema is a database.
200 * Advanced users can add or override initial commands to execute when
201 * connecting to the database server, as well as PDO connection settings. For
202 * example, to enable MySQL SELECT queries to exceed the max_join_size system
203 * variable, and to reduce the database connection timeout to 5 seconds:
206 * $databases['default']['default'] = array(
207 * 'init_commands' => array(
208 * 'big_selects' => 'SET SQL_BIG_SELECTS=1',
211 * PDO::ATTR_TIMEOUT => 5,
216 * WARNING: These defaults are designed for database portability. Changing them
217 * may cause unexpected behavior, including potential data loss.
219 * @see DatabaseConnection_mysql::__construct
220 * @see DatabaseConnection_pgsql::__construct
221 * @see DatabaseConnection_sqlite::__construct
223 * Database configuration format:
225 * $databases['default']['default'] = array(
226 * 'driver' => 'mysql',
227 * 'database' => 'databasename',
228 * 'username' => 'username',
229 * 'password' => 'password',
230 * 'host' => 'localhost',
233 * $databases['default']['default'] = array(
234 * 'driver' => 'pgsql',
235 * 'database' => 'databasename',
236 * 'username' => 'username',
237 * 'password' => 'password',
238 * 'host' => 'localhost',
241 * $databases['default']['default'] = array(
242 * 'driver' => 'sqlite',
243 * 'database' => '/path/to/databasefilename',
252 'database' => '{{ db_name }}',
253 'username' => '{{ db_user }}',
254 'password' => '{{ db_password }}',
255 'host' => 'localhost',
257 'driver' => '{{ db_driver }}',
264 * Access control for update.php script.
266 * If you are updating your Drupal installation using the update.php script but
267 * are not logged in using either an account with the "Administer software
268 * updates" permission or the site maintenance account (the account that was
269 * created during installation), you will need to modify the access check
270 * statement below. Change the FALSE to a TRUE to disable the access check.
271 * After finishing the upgrade, be sure to open this file again and change the
272 * TRUE back to a FALSE!
274 $update_free_access = FALSE;
277 * Salt for one-time login links and cancel links, form tokens, etc.
279 * This variable will be set to a random value by the installer. All one-time
280 * login links will be invalidated if the value is changed. Note that if your
281 * site is deployed on a cluster of web servers, you must ensure that this
282 * variable has the same value on each server. If this variable is empty, a hash
283 * of the serialized database credentials will be used as a fallback salt.
285 * For enhanced security, you may set this variable to a value using the
286 * contents of a file outside your docroot that is never saved together
287 * with any backups of your Drupal files and database.
290 * $drupal_hash_salt = file_get_contents('/home/example/salt.txt');
293 $drupal_hash_salt = '{{ hash_salt }}';
296 * Base URL (optional).
298 * If Drupal is generating incorrect URLs on your site, which could
299 * be in HTML headers (links to CSS and JS files) or visible links on pages
300 * (such as in menus), uncomment the Base URL statement below (remove the
301 * leading hash sign) and fill in the absolute URL to your Drupal installation.
303 * You might also want to force users to use a given domain.
304 * See the .htaccess file for more information.
307 * $base_url = 'http://www.example.com';
308 * $base_url = 'http://www.example.com:8888';
309 * $base_url = 'http://www.example.com/drupal';
310 * $base_url = 'https://www.example.com:8888/drupal';
312 * It is not allowed to have a trailing slash; Drupal will add it
315 # $base_url = 'http://www.example.com'; // NO trailing slash!
320 * To see what PHP settings are possible, including whether they can be set at
321 * runtime (by using ini_set()), read the PHP documentation:
322 * http://www.php.net/manual/ini.list.php
323 * See drupal_environment_initialize() in includes/bootstrap.inc for required
324 * runtime settings and the .htaccess file for non-runtime settings. Settings
325 * defined there should not be duplicated here so as to avoid conflict issues.
329 * Some distributions of Linux (most notably Debian) ship their PHP
330 * installations with garbage collection (gc) disabled. Since Drupal depends on
331 * PHP's garbage collection for clearing sessions, ensure that garbage
332 * collection occurs by using the most common settings.
334 ini_set('session.gc_probability', 1);
335 ini_set('session.gc_divisor', 100);
338 * Set session lifetime (in seconds), i.e. the time from the user's last visit
339 * to the active session may be deleted by the session garbage collector. When
340 * a session is deleted, authenticated users are logged out, and the contents
341 * of the user's $_SESSION variable is discarded.
343 ini_set('session.gc_maxlifetime', 200000);
346 * Set session cookie lifetime (in seconds), i.e. the time from the session is
347 * created to the cookie expires, i.e. when the browser is expected to discard
348 * the cookie. The value 0 means "until the browser is closed".
350 ini_set('session.cookie_lifetime', 2000000);
353 * If you encounter a situation where users post a large amount of text, and
354 * the result is stripped out upon viewing but can still be edited, Drupal's
355 * output filter may not have sufficient memory to process it. If you
356 * experience this issue, you may wish to uncomment the following two lines
357 * and increase the limits of these variables. For more information, see
358 * http://php.net/manual/pcre.configuration.php.
360 # ini_set('pcre.backtrack_limit', 200000);
361 # ini_set('pcre.recursion_limit', 200000);
364 * Drupal automatically generates a unique session cookie name for each site
365 * based on its full domain name. If you have multiple domains pointing at the
366 * same Drupal site, you can either redirect them all to a single domain (see
367 * comment in .htaccess), or uncomment the line below and specify their shared
368 * base domain. Doing so assures that users remain logged in as they cross
369 * between your various domains. Make sure to always start the $cookie_domain
370 * with a leading dot, as per RFC 2109.
372 # $cookie_domain = '.example.com';
375 * Variable overrides:
377 * To override specific entries in the 'variable' table for this site,
378 * set them here. You usually don't need to use this feature. This is
379 * useful in a configuration file for a vhost or directory, rather than
380 * the default settings.php. Any configuration setting from the 'variable'
381 * table can be given a new value. Note that any values you provide in
382 * these variable overrides will not be modifiable from the Drupal
383 * administration interface.
385 * The following overrides are examples:
386 * - site_name: Defines the site's name.
387 * - theme_default: Defines the default theme for this site.
388 * - anonymous: Defines the human-readable name of anonymous users.
389 * Remove the leading hash signs to enable.
391 # $conf['site_name'] = 'My Drupal site';
392 # $conf['theme_default'] = 'garland';
393 # $conf['anonymous'] = 'Visitor';
396 * A custom theme can be set for the offline page. This applies when the site
397 * is explicitly set to maintenance mode through the administration page or when
398 * the database is inactive due to an error. It can be set through the
399 * 'maintenance_theme' key. The template file should also be copied into the
400 * theme. It is located inside 'modules/system/maintenance-page.tpl.php'.
401 * Note: This setting does not apply to installation and update pages.
403 # $conf['maintenance_theme'] = 'bartik';
406 * Reverse Proxy Configuration:
408 * Reverse proxy servers are often used to enhance the performance
409 * of heavily visited sites and may also provide other site caching,
410 * security, or encryption benefits. In an environment where Drupal
411 * is behind a reverse proxy, the real IP address of the client should
412 * be determined such that the correct client IP address is available
413 * to Drupal's logging, statistics, and access management systems. In
414 * the most simple scenario, the proxy server will add an
415 * X-Forwarded-For header to the request that contains the client IP
416 * address. However, HTTP headers are vulnerable to spoofing, where a
417 * malicious client could bypass restrictions by setting the
418 * X-Forwarded-For header directly. Therefore, Drupal's proxy
419 * configuration requires the IP addresses of all remote proxies to be
420 * specified in $conf['reverse_proxy_addresses'] to work correctly.
422 * Enable this setting to get Drupal to determine the client IP from
423 * the X-Forwarded-For header (or $conf['reverse_proxy_header'] if set).
424 * If you are unsure about this setting, do not have a reverse proxy,
425 * or Drupal operates in a shared hosting environment, this setting
426 * should remain commented out.
428 * In order for this setting to be used you must specify every possible
429 * reverse proxy IP address in $conf['reverse_proxy_addresses'].
430 * If a complete list of reverse proxies is not available in your
431 * environment (for example, if you use a CDN) you may set the
432 * $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
433 * Be aware, however, that it is likely that this would allow IP
434 * address spoofing unless more advanced precautions are taken.
436 # $conf['reverse_proxy'] = TRUE;
439 * Specify every reverse proxy IP address in your environment.
440 * This setting is required if $conf['reverse_proxy'] is TRUE.
442 # $conf['reverse_proxy_addresses'] = array('a.b.c.d', ...);
445 * Set this value if your proxy server sends the client IP in a header
446 * other than X-Forwarded-For.
448 # $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
453 * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page
454 * views. This tells a HTTP proxy that it may return a page from its local
455 * cache without contacting the web server, if the user sends the same Cookie
456 * header as the user who originally requested the cached page. Without "Vary:
457 * Cookie", authenticated users would also be served the anonymous page from
458 * the cache. If the site has mostly anonymous users except a few known
459 * editors/administrators, the Vary header can be omitted. This allows for
460 * better caching in HTTP proxies (including reverse proxies), i.e. even if
461 * clients send different cookies, they still get content served from the cache.
462 * However, authenticated users should access the site directly (i.e. not use an
463 * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
464 * getting cached pages from the proxy.
466 # $conf['omit_vary_cookie'] = TRUE;
469 * CSS/JS aggregated file gzip compression:
471 * By default, when CSS or JS aggregation and clean URLs are enabled Drupal will
472 * store a gzip compressed (.gz) copy of the aggregated files. If this file is
473 * available then rewrite rules in the default .htaccess file will serve these
474 * files to browsers that accept gzip encoded content. This allows pages to load
475 * faster for these users and has minimal impact on server load. If you are
476 * using a webserver other than Apache httpd, or a caching reverse proxy that is
477 * configured to cache and compress these files itself you may want to uncomment
478 * one or both of the below lines, which will prevent gzip files being stored.
480 # $conf['css_gzip_compression'] = FALSE;
481 # $conf['js_gzip_compression'] = FALSE;
486 * Block caching may not be compatible with node access modules depending on
487 * how the original block cache policy is defined by the module that provides
488 * the block. By default, Drupal therefore disables block caching when one or
489 * more modules implement hook_node_grants(). If you consider block caching to
490 * be safe on your site and want to bypass this restriction, uncomment the line
493 # $conf['block_cache_bypass_node_grants'] = TRUE;
498 * To override specific strings on your site with or without enabling the Locale
499 * module, add an entry to this list. This functionality allows you to change
500 * a small number of your site's default English language interface strings.
502 * Remove the leading hash signs to enable.
504 # $conf['locale_custom_strings_en'][''] = array(
505 # 'forum' => 'Discussion board',
506 # '@count min' => '@count minutes',
513 * To bypass database queries for denied IP addresses, use this setting.
514 * Drupal queries the {blocked_ips} table by default on every page request
515 * for both authenticated and anonymous users. This allows the system to
516 * block IP addresses from within the administrative interface and before any
517 * modules are loaded. However on high traffic websites you may want to avoid
518 * this query, allowing you to bypass database access altogether for anonymous
519 * users under certain caching configurations.
521 * If using this setting, you will need to add back any IP addresses which
522 * you may have blocked via the administrative interface. Each element of this
523 * array represents a blocked IP address. Uncommenting the array and leaving it
524 * empty will have the effect of disabling IP blocking on your site.
526 * Remove the leading hash signs to enable.
528 # $conf['blocked_ips'] = array(
535 * Drupal can generate fully themed 404 pages. However, some of these responses
536 * are for images or other resource files that are not displayed to the user.
537 * This can waste bandwidth, and also generate server load.
539 * The options below return a simple, fast 404 page for URLs matching a
541 * - 404_fast_paths_exclude: A regular expression to match paths to exclude,
542 * such as images generated by image styles, or dynamically-resized images.
543 * The default pattern provided below also excludes the private file system.
544 * If you need to add more paths, you can add '|path' to the expression.
545 * - 404_fast_paths: A regular expression to match paths that should return a
546 * simple 404 page, rather than the fully themed 404 page. If you don't have
547 * any aliases ending in htm or html you can add '|s?html?' to the expression.
548 * - 404_fast_html: The html to return for simple 404 pages.
550 * Add leading hash signs if you would like to disable this functionality.
552 $conf['404_fast_paths_exclude'] = '/\/(?:styles)|(?:system\/files)\//';
553 $conf['404_fast_paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
554 $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>';
557 * By default the page request process will return a fast 404 page for missing
558 * files if they match the regular expression set in '404_fast_paths' and not
559 * '404_fast_paths_exclude' above. 404 errors will simultaneously be logged in
560 * the Drupal system log.
562 * You can choose to return a fast 404 page earlier for missing pages (as soon
563 * as settings.php is loaded) by uncommenting the line below. This speeds up
564 * server response time when loading 404 error pages and prevents the 404 error
565 * from being logged in the Drupal system log. In order to prevent valid pages
566 * such as image styles and other generated content that may match the
567 * '404_fast_paths' regular expression from returning 404 errors, it is
568 * necessary to add them to the '404_fast_paths_exclude' regular expression
569 * above. Make sure that you understand the effects of this feature before
570 * uncommenting the line below.
575 * External access proxy settings:
577 * If your site must access the Internet via a web proxy then you can enter
578 * the proxy settings here. Currently only basic authentication is supported
579 * by using the username and password variables. The proxy_user_agent variable
580 * can be set to NULL for proxies that require no User-Agent header or to a
581 * non-empty string for proxies that limit requests to a specific agent. The
582 * proxy_exceptions variable is an array of host names to be accessed directly,
585 # $conf['proxy_server'] = '';
586 # $conf['proxy_port'] = 8080;
587 # $conf['proxy_username'] = '';
588 # $conf['proxy_password'] = '';
589 # $conf['proxy_user_agent'] = '';
590 # $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost');
593 * Authorized file system operations:
595 * The Update manager module included with Drupal provides a mechanism for
596 * site administrators to securely install missing updates for the site
597 * directly through the web user interface. On securely-configured servers,
598 * the Update manager will require the administrator to provide SSH or FTP
599 * credentials before allowing the installation to proceed; this allows the
600 * site to update the new files as the user who owns all the Drupal files,
601 * instead of as the user the webserver is running as. On servers where the
602 * webserver user is itself the owner of the Drupal files, the administrator
603 * will not be prompted for SSH or FTP credentials (note that these server
604 * setups are common on shared hosting, but are inherently insecure).
606 * Some sites might wish to disable the above functionality, and only update
607 * the code directly via SSH or FTP themselves. This setting completely
608 * disables all functionality related to these authorized file operations.
610 * @see http://drupal.org/node/244924
612 * Remove the leading hash signs to disable.
614 # $conf['allow_authorize_operations'] = FALSE;
619 * When debugging is enabled:
620 * - The markup of each template is surrounded by HTML comments that contain
621 * theming information, such as template file name suggestions.
622 * - Note that this debugging markup will cause automated tests that directly
623 * check rendered HTML to fail.
625 * For more information about debugging theme templates, see
626 * https://www.drupal.org/node/223440#theme-debug.
628 * Not recommended in production environments.
630 * Remove the leading hash sign to enable.
632 # $conf['theme_debug'] = TRUE;
635 * CSS identifier double underscores allowance:
637 * To allow CSS identifiers to contain double underscores (.example__selector)
638 * for Drupal's BEM-style naming standards, uncomment the line below.
639 * Note that if you change this value in existing sites, existing page styles
642 * @see drupal_clean_css_identifier()
644 # $conf['allow_css_double_underscores'] = TRUE;