├── .ddev ├── config.yaml ├── docker-compose.network-mtu.yaml └── run-phpstorm.sh ├── .editorconfig ├── .gitattributes ├── .github └── FUNDING.yml ├── .gitignore ├── .gitpod.yml ├── .theia └── launch.json ├── .vscode └── launch.json ├── LICENSE ├── README.md ├── composer.json ├── composer.old.lock └── web ├── .csslintrc ├── .eslintignore ├── .eslintrc.json ├── .ht.router.php ├── .htaccess ├── INSTALL.txt ├── autoload.php ├── example.gitignore ├── index.php ├── robots.txt ├── sites ├── default │ ├── default.services.yml │ ├── default.settings.php │ ├── services.yml │ └── settings.php ├── development.services.yml ├── example.settings.local.php └── example.sites.php ├── update.php └── web.config /.ddev/config.yaml: -------------------------------------------------------------------------------- 1 | name: ddev-gitpod 2 | type: drupal10 3 | docroot: web 4 | php_version: "8.3" 5 | webserver_type: nginx-fpm 6 | router_http_port: "80" 7 | router_https_port: "443" 8 | xdebug_enabled: false 9 | additional_hostnames: [] 10 | additional_fqdns: [] 11 | database: 12 | type: mariadb 13 | version: "10.6" 14 | nfs_mount_enabled: false 15 | mutagen_enabled: false 16 | use_dns_when_possible: true 17 | composer_version: "2" 18 | web_environment: [] 19 | nodejs_version: "16" 20 | 21 | 22 | # Key features of ddev's config.yaml: 23 | 24 | # name: # Name of the project, automatically provides 25 | # http://projectname.ddev.site and https://projectname.ddev.site 26 | 27 | # type: # drupal6/7/8, backdrop, typo3, wordpress, php 28 | 29 | # docroot: # Relative path to the directory containing index.php. 30 | 31 | # php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" 32 | 33 | # You can explicitly specify the webimage but this 34 | # is not recommended, as the images are often closely tied to ddev's' behavior, 35 | # so this can break upgrades. 36 | 37 | # webimage: # nginx/php docker image. 38 | 39 | # database: 40 | # type: # mysql, mariadb 41 | # version: # database version, like "10.3" or "8.0" 42 | # Note that mariadb_version or mysql_version from v1.18 and earlier 43 | # will automatically be converted to this notation with just a "ddev config --auto" 44 | 45 | # router_http_port: # Port to be used for http (defaults to port 80) 46 | # router_https_port: # Port for https (defaults to 443) 47 | 48 | # xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart" 49 | # Note that for most people the commands 50 | # "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, 51 | # as leaving xdebug enabled all the time is a big performance hit. 52 | 53 | # xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart" 54 | # Note that for most people the commands 55 | # "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better, 56 | # as leaving xhprof enabled all the time is a big performance hit. 57 | 58 | # webserver_type: nginx-fpm # or apache-fpm 59 | 60 | # timezone: Europe/Berlin 61 | # This is the timezone used in the containers and by PHP; 62 | # it can be set to any valid timezone, 63 | # see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 64 | # For example Europe/Dublin or MST7MDT 65 | 66 | # composer_root: 67 | # Relative path to the composer root directory from the project root. This is 68 | # the directory which contains the composer.json and where all Composer related 69 | # commands are executed. 70 | 71 | # composer_version: "2" 72 | # You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 73 | # to use the latest major version available at the time your container is built. 74 | # It is also possible to use each other Composer version channel. This includes: 75 | # - 2.2 (latest Composer LTS version) 76 | # - stable 77 | # - preview 78 | # - snapshot 79 | # Alternatively, an explicit Composer version may be specified, for example "2.2.18". 80 | # To reinstall Composer after the image was built, run "ddev debug refresh". 81 | 82 | # nodejs_version: "16" 83 | # change from the default system Node.js version to another supported version, like 12, 14, 17, 18. 84 | # Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any 85 | # Node.js version, including v6, etc. 86 | 87 | # additional_hostnames: 88 | # - somename 89 | # - someothername 90 | # would provide http and https URLs for "somename.ddev.site" 91 | # and "someothername.ddev.site". 92 | 93 | # additional_fqdns: 94 | # - example.com 95 | # - sub1.example.com 96 | # would provide http and https URLs for "example.com" and "sub1.example.com" 97 | # Please take care with this because it can cause great confusion. 98 | 99 | # upload_dir: custom/upload/dir 100 | # would set the destination path for ddev import-files to /custom/upload/dir 101 | # When mutagen is enabled this path is bind-mounted so that all the files 102 | # in the upload_dir don't have to be synced into mutagen 103 | 104 | # working_dir: 105 | # web: /var/www/html 106 | # db: /home 107 | # would set the default working directory for the web and db services. 108 | # These values specify the destination directory for ddev ssh and the 109 | # directory in which commands passed into ddev exec are run. 110 | 111 | # omit_containers: [db, dba, ddev-ssh-agent] 112 | # Currently only these containers are supported. Some containers can also be 113 | # omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit 114 | # the "db" container, several standard features of ddev that access the 115 | # database container will be unusable. In the global configuration it is also 116 | # possible to omit ddev-router, but not here. 117 | 118 | # nfs_mount_enabled: false 119 | # Great performance improvement but requires host configuration first. 120 | # See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs 121 | 122 | # mutagen_enabled: false 123 | # Performance improvement using mutagen asynchronous updates. 124 | # See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen 125 | 126 | # fail_on_hook_fail: False 127 | # Decide whether 'ddev start' should be interrupted by a failing hook 128 | 129 | # host_https_port: "59002" 130 | # The host port binding for https can be explicitly specified. It is 131 | # dynamic unless otherwise specified. 132 | # This is not used by most people, most people use the *router* instead 133 | # of the localhost port. 134 | 135 | # host_webserver_port: "59001" 136 | # The host port binding for the ddev-webserver can be explicitly specified. It is 137 | # dynamic unless otherwise specified. 138 | # This is not used by most people, most people use the *router* instead 139 | # of the localhost port. 140 | 141 | # host_db_port: "59002" 142 | # The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic 143 | # unless explicitly specified. 144 | 145 | # phpmyadmin_port: "8036" 146 | # phpmyadmin_https_port: "8037" 147 | # The PHPMyAdmin ports can be changed from the default 8036 and 8037 148 | 149 | # host_phpmyadmin_port: "8036" 150 | # The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed 151 | # through ddev-router, but it can be specified and bound. 152 | 153 | # mailhog_port: "8025" 154 | # mailhog_https_port: "8026" 155 | # The MailHog ports can be changed from the default 8025 and 8026 156 | 157 | # host_mailhog_port: "8025" 158 | # The mailhog port is not normally bound on the host at all, instead being routed 159 | # through ddev-router, but it can be bound directly to localhost if specified here. 160 | 161 | # webimage_extra_packages: [php7.4-tidy, php-bcmath] 162 | # Extra Debian packages that are needed in the webimage can be added here 163 | 164 | # dbimage_extra_packages: [telnet,netcat] 165 | # Extra Debian packages that are needed in the dbimage can be added here 166 | 167 | # use_dns_when_possible: true 168 | # If the host has internet access and the domain configured can 169 | # successfully be looked up, DNS will be used for hostname resolution 170 | # instead of editing /etc/hosts 171 | # Defaults to true 172 | 173 | # project_tld: ddev.site 174 | # The top-level domain used for project URLs 175 | # The default "ddev.site" allows DNS lookup via a wildcard 176 | # If you prefer you can change this to "ddev.local" to preserve 177 | # pre-v1.9 behavior. 178 | 179 | # ngrok_args: --basic-auth username:pass1234 180 | # Provide extra flags to the "ngrok http" command, see 181 | # https://ngrok.com/docs#http or run "ngrok http -h" 182 | 183 | # disable_settings_management: false 184 | # If true, ddev will not create CMS-specific settings files like 185 | # Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php 186 | # In this case the user must provide all such settings. 187 | 188 | # You can inject environment variables into the web container with: 189 | # web_environment: 190 | # - SOMEENV=somevalue 191 | # - SOMEOTHERENV=someothervalue 192 | 193 | # no_project_mount: false 194 | # (Experimental) If true, ddev will not mount the project into the web container; 195 | # the user is responsible for mounting it manually or via a script. 196 | # This is to enable experimentation with alternate file mounting strategies. 197 | # For advanced users only! 198 | 199 | # bind_all_interfaces: false 200 | # If true, host ports will be bound on all network interfaces, 201 | # not just the localhost interface. This means that ports 202 | # will be available on the local network if the host firewall 203 | # allows it. 204 | 205 | # default_container_timeout: 120 206 | # The default time that ddev waits for all containers to become ready can be increased from 207 | # the default 120. This helps in importing huge databases, for example. 208 | 209 | #web_extra_exposed_ports: 210 | #- name: nodejs 211 | # container_port: 3000 212 | # http_port: 2999 213 | # https_port: 3000 214 | #- name: something 215 | # container_port: 4000 216 | # https_port: 4000 217 | # http_port: 3999 218 | # Allows a set of extra ports to be exposed via ddev-router 219 | # The port behavior on the ddev-webserver must be arranged separately, for example 220 | # using web_extra_daemons. 221 | # For example, with a web app on port 3000 inside the container, this config would 222 | # expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998 223 | # web_extra_exposed_ports: 224 | # - container_port: 3000 225 | # http_port: 9998 226 | # https_port: 9999 227 | 228 | #web_extra_daemons: 229 | #- name: "http-1" 230 | # command: "/var/www/html/node_modules/.bin/http-server -p 3000" 231 | # directory: /var/www/html 232 | #- name: "http-2" 233 | # command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" 234 | # directory: /var/www/html 235 | 236 | # override_config: false 237 | # By default, config.*.yaml files are *merged* into the configuration 238 | # But this means that some things can't be overridden 239 | # For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge 240 | # and you can't erase existing hooks or all environment variables. 241 | # However, with "override_config: true" in a particular config.*.yaml file, 242 | # 'nfs_mount_enabled: false' can override the existing values, and 243 | # hooks: 244 | # post-start: [] 245 | # or 246 | # web_environment: [] 247 | # or 248 | # additional_hostnames: [] 249 | # can have their intended affect. 'override_config' affects only behavior of the 250 | # config.*.yaml file it exists in. 251 | 252 | # Many ddev commands can be extended to run tasks before or after the 253 | # ddev command is executed, for example "post-start", "post-import-db", 254 | # "pre-composer", "post-composer" 255 | # See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more 256 | # information on the commands that can be extended and the tasks you can define 257 | # for them. Example: 258 | #hooks: 259 | # post-import-db: 260 | # - exec: drush cr 261 | # - exec: drush updb 262 | -------------------------------------------------------------------------------- /.ddev/docker-compose.network-mtu.yaml: -------------------------------------------------------------------------------- 1 | # Temporary fix for network issues when running composer inside ddev container (in Gitpod) 2 | # 3 | # Since Gitpod removed slirp4netns as part of performance improvements, 4 | # MTU value should be aligned to the one in gitpod.io 5 | # 6 | # Gitpod fixed it for docker - https://github.com/gitpod-io/gitpod/pull/9356 7 | # and for docker-compose - https://github.com/gitpod-io/template-docker-compose/pull/4 8 | # 9 | # ddev doesn't use Gitpod's custom docker-compose binary. Instead, ddev uses 10 | # its own docker-compose binary at /home/gitpod/.ddev/bin/docker-compose 11 | # ddev issue [WIP] - https://github.com/drud/ddev/issues/3766 12 | # 13 | # Align the MTU value to the one that is set in Gitpod (1440) 14 | 15 | networks: 16 | default: 17 | driver_opts: 18 | com.docker.network.driver.mtu: 1440 19 | -------------------------------------------------------------------------------- /.ddev/run-phpstorm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! -x ~/.projector/configs/PhpStorm/run.sh ]; then 4 | echo "PhpStorm runner not found" && exit 1 5 | fi 6 | ~/.projector/configs/PhpStorm/run.sh $GITPOD_REPO_ROOT 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Drupal editor configuration normalization 2 | # @see http://editorconfig.org/ 3 | 4 | # This is the top-most .editorconfig file; do not search in parent directories. 5 | root = true 6 | 7 | # All files. 8 | [*] 9 | end_of_line = LF 10 | indent_style = space 11 | indent_size = 2 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | 16 | [composer.{json,lock}] 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Drupal git normalization 2 | # @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html 3 | # @see https://www.drupal.org/node/1542048 4 | 5 | # Normally these settings would be done with macro attributes for improved 6 | # readability and easier maintenance. However macros can only be defined at the 7 | # repository root directory. Drupal avoids making any assumptions about where it 8 | # is installed. 9 | 10 | # Define text file attributes. 11 | # - Treat them as text. 12 | # - Ensure no CRLF line-endings, neither on checkout nor on checkin. 13 | # - Detect whitespace errors. 14 | # - Exposed by default in `git diff --color` on the CLI. 15 | # - Validate with `git diff --check`. 16 | # - Deny applying with `git apply --whitespace=error-all`. 17 | # - Fix automatically with `git apply --whitespace=fix`. 18 | 19 | *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 20 | *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 21 | *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 22 | *.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 23 | *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html 24 | *.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 25 | *.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 26 | *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 27 | *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 28 | *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 29 | *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 30 | *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 31 | *.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 32 | *.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 33 | *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 34 | *.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 35 | *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 36 | *.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 37 | *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 38 | *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 39 | *.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php 40 | *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 41 | *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 42 | *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 43 | *.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 44 | 45 | # Define binary file attributes. 46 | # - Do not treat them as text. 47 | # - Include binary diff in patches instead of "binary files differ." 48 | *.eot -text diff 49 | *.exe -text diff 50 | *.gif -text diff 51 | *.gz -text diff 52 | *.ico -text diff 53 | *.jpeg -text diff 54 | *.jpg -text diff 55 | *.otf -text diff 56 | *.phar -text diff 57 | *.png -text diff 58 | *.svgz -text diff 59 | *.ttf -text diff 60 | *.woff -text diff 61 | *.woff2 -text diff 62 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: shaal 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### 2 | ### GitHub repository .gitignore section 3 | ### 4 | 5 | # Ignore directories generated by Composer 6 | /console/ 7 | /drush/Commands/contrib/ 8 | /vendor/ 9 | /web/core/ 10 | /web/modules/contrib/ 11 | /web/themes/contrib/ 12 | /web/profiles/contrib/ 13 | /web/libraries/ 14 | /web/private/scripts/quicksilver 15 | /web/private/examples 16 | 17 | # Ignore transpiled js 18 | /web/modules/custom/**/js/*.js 19 | /web/modules/custom/**/js/**/*.js 20 | /web/modules/custom/**/vue_templates/*.js 21 | !/web/modules/custom/**/vue_templates/*.es6.js 22 | /web/modules/custom/**/vue_templates/**/*.js 23 | !/web/modules/custom/**/vue_templates/**/*.es6.js 24 | !/web/modules/custom/**/js/*.es6.js 25 | !/web/modules/custom/**/js/*.legacy.js 26 | /web/themes/custom/tableau_www/js/**/*.js 27 | !/web/themes/custom/tableau_www/js/**/*.es6.js 28 | !/web/themes/custom/tableau_www/js/**/*.legacy.js 29 | /web/themes/custom/**/js/**/*.js 30 | !/web/themes/custom/**/js/**/*.es6.js 31 | !/web/themes/custom/**/js/**/*.legacy.js 32 | *.js.map 33 | 34 | # Ignore Node files 35 | /node_modules/ 36 | package-lock.json 37 | 38 | # Add directories containing build assets below. 39 | # Keep all additions above the "cut" line. 40 | 41 | # This distinction is only important when using this 42 | # repository as a custom upstream. The .gitignore file 43 | # is not modified in the GitHub PR workflow. 44 | 45 | 46 | # :::::::::::::::::::::: cut :::::::::::::::::::::: 47 | 48 | ### 49 | ### Pantheon site .gitignore section 50 | ### 51 | ### Items below the "cut" line are still ignored on 52 | ### the Pantheon site. Items above the "cut" line 53 | ### are ignored in the GitHub repository, but committed 54 | ### to the Pantheon repository. 55 | ### @see RoboFile.php prepareArtifacts 56 | ### 57 | 58 | # Ignore Lando settings 59 | .lando.yml 60 | 61 | # Ignore local bash files 62 | .bashrc-local 63 | 64 | # Ignore local settings 65 | /web/sites/settings.local.php 66 | /app 67 | /tests/behat/behat.local.yml 68 | /tests/phpunit.local.xml 69 | 70 | # Lint cache 71 | .phplint-cache 72 | 73 | # Ignore Drupal's file directory 74 | web/sites/default/files 75 | 76 | # Pantheon commits a settings.php for environment-specific settings. 77 | # Place local settings in settings.local.php 78 | web/sites/*/settings.local.php 79 | 80 | # Ignore SimpleTest multi-site environment. 81 | web/sites/simpletest 82 | 83 | # Ignore .gitlab settings globally. 84 | /**/.gitlab/ 85 | 86 | # Ignore package manager files from dependencies. 87 | /vendor/**/yarn.lock 88 | /vendor/**/composer.json 89 | /vendor/**/composer.lock 90 | /web/**/composer.json 91 | /web/**/composer.lock 92 | # Allow locking specific versions of npm packages, in order to avoid potential issues of breaking changes. 93 | # /web/**/yarn.lock 94 | 95 | # Ignore test files within Drupal and vendors. 96 | /vendor/**/tests/ 97 | /web/core/**/tests/ 98 | /web/libraries/**/tests/ 99 | /web/modules/contrib/**/tests/ 100 | 101 | # Ignore common text files within Drupal and vendors. 102 | /vendor/**/README.* 103 | /vendor/**/LICENSE.* 104 | /vendor/**/PATCHES.* 105 | /web/**/README.* 106 | /web/**/LICENSE.* 107 | /web/**/PATCHES.* 108 | 109 | # Ignore select source filetypes that are compiled to other files. 110 | /vendor/**/*.scss 111 | /web/libraries/**/*.scss 112 | /web/libraries/**/*.ts 113 | /web/modules/contrib/**/*.scss 114 | /web/core/**/*.es6.js 115 | /web/modules/contrib/**/*.es6.js 116 | 117 | # Ignore files generated by PhpStorm 118 | .idea 119 | 120 | # Ignore sensitive files 121 | .env 122 | 123 | # Ignore CI config that is not our's. 124 | /web/**/.travis.yml 125 | /web/**/.circleci/ 126 | 127 | # Odd patterns from select dependencies. 128 | # For some reason datalayer-helper bundles the entire closure js compiler. 129 | /**/third_party/closure-compiler/ 130 | /**/third_party/closure-library/ 131 | /**/third_party/closure-linter/ 132 | # Coveo's js search-ui framework includes a lot of tests and docs. 133 | /web/libraries/coveo/coverage/ 134 | /web/libraries/coveo/docgen/ 135 | # No need for the umami Drupal 8 demo profile. 136 | /web/core/profiles/demo_umami/ 137 | 138 | # Packages # 139 | ############ 140 | *.7z 141 | *.dmg 142 | *.gz 143 | *.bz2 144 | *.iso 145 | *.jar 146 | *.rar 147 | *.tar 148 | *.zip 149 | *.tgz 150 | 151 | # Logs and databases # 152 | ###################### 153 | /logs/ 154 | /database/ 155 | *.log 156 | 157 | # Test files # 158 | tests/cypress/build/ 159 | 160 | # OS generated files # 161 | ###################### 162 | .DS_Store* 163 | ehthumbs.db 164 | Icon 165 | !/web/core/lib/Drupal/Core/Layout/Icon 166 | 167 | Thumbs.db 168 | ._* 169 | 170 | # Vim generated files # 171 | ###################### 172 | *.un~ 173 | 174 | # SASS # 175 | ########## 176 | .sass-cache 177 | 178 | # Things in the core directory that Drupal 8 commits in the repository. 179 | !web/core/**/*.gz 180 | 181 | # CircleCI directories# 182 | ####################### 183 | circleci/database/* 184 | # But keep the folders 185 | !circleci/database/.keep 186 | 187 | 188 | # The Build # 189 | # Include Drupal settings files 190 | !/web/sites/*/settings.php 191 | !/web/sites/*/services.yml 192 | 193 | # Ignore local and generated settings files 194 | /web/sites/*/settings.local.php 195 | /web/sites/*/settings.build.php 196 | /web/sites/*/services.build.yml 197 | 198 | # Ignore artifacts 199 | /artifacts 200 | 201 | # DDev 202 | /web/sites/default/drushrc.php 203 | 204 | # Gitpod 205 | .ddev/docker-compose.host-docker-internal.yaml 206 | .ddev/docker-compose.xdebug-ip.yaml 207 | .ddev/config.fqdns.yaml 208 | .ddev/config.gitpod-overrides.yaml 209 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: drupalpod/drupalpod-gitpod-base:20240905 2 | # ddev and composer are running as part of the prebuild 3 | # when starting a workspace all docker images are ready 4 | tasks: 5 | - init: | 6 | ddev start -y 7 | ddev composer install 8 | ddev drush si -y --account-pass=admin --site-name='Drupal Training' 9 | command: | 10 | ddev start -y 11 | gp ports await 8080 && gp preview $(gp url 8080) 12 | ddev composer update 13 | ddev drush updb -y 14 | ddev drush cr 15 | 16 | # VScode xdebug extension 17 | vscode: 18 | extensions: 19 | # PHP extensions. 20 | - felixfbecker.php-debug 21 | - wongjn.php-sniffer 22 | - neilbrayfield.php-docblocker 23 | - bmewburn.vscode-intelephense-client 24 | 25 | # Twig extensions. 26 | - mblode.twig-language-2 27 | 28 | ports: 29 | # Used by ddev - local db clients 30 | - port: 3306 31 | onOpen: ignore 32 | # Used by projector 33 | - port: 6942 34 | onOpen: ignore 35 | # Used by MailHog 36 | - port: 8027 37 | onOpen: ignore 38 | # Used by phpMyAdmin 39 | - port: 8036 40 | onOpen: ignore 41 | # Direct-connect ddev-webserver port that is the main port 42 | - port: 8080 43 | onOpen: ignore 44 | # Ignore host https port 45 | - port: 8443 46 | onOpen: ignore 47 | # xdebug port 48 | - port: 9003 49 | onOpen: ignore 50 | # projector port 51 | - port: 9999 52 | onOpen: open-browser 53 | -------------------------------------------------------------------------------- /.theia/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Listen for XDebug", 9 | "type": "php", 10 | "request": "launch", 11 | "hostname": "0.0.0.0", 12 | "port": 9000, 13 | "pathMappings": { 14 | "/var/www/html": "${workspaceRoot}" 15 | } 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Listen for XDebug", 9 | "type": "php", 10 | "request": "launch", 11 | "hostname": "0.0.0.0", 12 | "port": 9003, 13 | "pathMappings": { 14 | "/var/www/html": "${workspaceRoot}" 15 | } 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Ofer Shaal 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/shaal/ddev-gitpod) 2 | 3 | # ddev + Gitpod 4 | ## Set up a full Drupal dev environment in a browser (now using Drupal 10.4!) 5 | 6 | This project demonstrates a complete Drupal 11 development environment, utilizing ddev and Gitpod, through your browser. 7 | 8 | ## This is a branch from @shaal - creates a blank Drupal site instead of a Unami Demo ## 9 | 10 | ## Video Demo 11 | 12 | 13 | 14 | ## Prerequisites: 15 | 1. [Sign up for gitpod.io](https://gitpod.io/login) - **USE A GITHUB ACCOUNT** 16 | 17 | ## Try it out: 18 | 1. Click on the following link 19 | https://gitpod.io/#https://github.com/imrodmartin/ddev-gitpod 20 | 1. Your environment is being prepared, wait about 2-3 minutes. DO NOT INTERRUPT THE TERMINAL COMMANDS (A splash screen will appear) 21 | 2. VScode IDE will be displayed, a few seconds later you will see a fresh blank Drupal site. 22 | 3. Open your website's URL in a browser (at the bottom of the terminal window) 23 | 4. :tada: 24 | 25 | ## Thank you 26 | [@shaal](https://github.com/shaal) A HUGE thank you to Offer Shaal for his work on this and continued help! 27 | 28 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "drupal/recommended-project", 3 | "description": "Project template for Drupal projects with a relocated document root", 4 | "type": "project", 5 | "license": "GPL-2.0-or-later", 6 | "homepage": "https://www.drupal.org/project/drupal", 7 | "support": { 8 | "docs": "https://www.drupal.org/docs/user_guide/en/index.html", 9 | "chat": "https://www.drupal.org/node/314178" 10 | }, 11 | "repositories": [ 12 | { 13 | "type": "composer", 14 | "url": "https://packages.drupal.org/8" 15 | } 16 | ], 17 | "require": { 18 | "composer/installers": "^2.0", 19 | "drupal/core-composer-scaffold": "^10", 20 | "drupal/core-project-message": "^10", 21 | "drupal/core-recommended": "^10", 22 | "drush/drush": "^13" 23 | }, 24 | "conflict": { 25 | "drupal/drupal": "*" 26 | }, 27 | "minimum-stability": "dev", 28 | "prefer-stable": true, 29 | "config": { 30 | "allow-plugins": { 31 | "composer/installers": true, 32 | "drupal/core-composer-scaffold": true, 33 | "drupal/core-project-message": true, 34 | "phpstan/extension-installer": true, 35 | "dealerdirect/phpcodesniffer-composer-installer": true 36 | }, 37 | "sort-packages": true 38 | }, 39 | "extra": { 40 | "drupal-scaffold": { 41 | "locations": { 42 | "web-root": "web/" 43 | } 44 | }, 45 | "installer-paths": { 46 | "web/core": [ 47 | "type:drupal-core" 48 | ], 49 | "web/libraries/{$name}": [ 50 | "type:drupal-library" 51 | ], 52 | "web/modules/contrib/{$name}": [ 53 | "type:drupal-module" 54 | ], 55 | "web/profiles/contrib/{$name}": [ 56 | "type:drupal-profile" 57 | ], 58 | "web/themes/contrib/{$name}": [ 59 | "type:drupal-theme" 60 | ], 61 | "drush/Commands/contrib/{$name}": [ 62 | "type:drupal-drush" 63 | ], 64 | "web/modules/custom/{$name}": [ 65 | "type:drupal-custom-module" 66 | ], 67 | "web/profiles/custom/{$name}": [ 68 | "type:drupal-custom-profile" 69 | ], 70 | "web/themes/custom/{$name}": [ 71 | "type:drupal-custom-theme" 72 | ] 73 | }, 74 | "drupal-core-project-message": { 75 | "include-keys": [ 76 | "homepage", 77 | "support" 78 | ], 79 | "post-create-project-cmd-message": [ 80 | " ", 81 | " Congratulations, you’ve installed the Drupal codebase ", 82 | " from the drupal/recommended-project template! ", 83 | " ", 84 | "", 85 | "Next steps:", 86 | " * Install the site: https://www.drupal.org/docs/installing-drupal", 87 | " * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html", 88 | " * Get support: https://www.drupal.org/support", 89 | " * Get involved with the Drupal community:", 90 | " https://www.drupal.org/getting-involved", 91 | " * Remove the plugin that prints this message:", 92 | " composer remove drupal/core-project-message" 93 | ] 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /web/.csslintrc: -------------------------------------------------------------------------------- 1 | --errors=box-model, 2 | display-property-grouping, 3 | duplicate-background-images, 4 | duplicate-properties, 5 | empty-rules, 6 | ids, 7 | import, 8 | important, 9 | known-properties, 10 | outline-none, 11 | overqualified-elements, 12 | qualified-headings, 13 | shorthand, 14 | star-property-hack, 15 | text-indent, 16 | underscore-property-hack, 17 | unique-headings, 18 | unqualified-attributes, 19 | vendor-prefix, 20 | zero-units 21 | --ignore=adjoining-classes, 22 | box-sizing, 23 | bulletproof-font-face, 24 | compatible-vendor-prefixes, 25 | errors, 26 | fallback-colors, 27 | floats, 28 | font-faces, 29 | font-sizes, 30 | gradients, 31 | import-ie-limit, 32 | order-alphabetical, 33 | regex-selectors, 34 | rules-count, 35 | selector-max, 36 | selector-max-approaching, 37 | selector-newline, 38 | universal-selector 39 | --exclude-list=core/assets, 40 | vendor 41 | -------------------------------------------------------------------------------- /web/.eslintignore: -------------------------------------------------------------------------------- 1 | core/**/* 2 | vendor/**/* 3 | sites/**/files/**/* 4 | libraries/**/* 5 | sites/**/libraries/**/* 6 | profiles/**/libraries/**/* 7 | **/js_test_files/**/* 8 | **/node_modules/**/* 9 | -------------------------------------------------------------------------------- /web/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./core/.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /web/.ht.router.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | Require all denied 9 | 10 | 11 | Order allow,deny 12 | 13 | 14 | 15 | # Don't show directory listings for URLs which map to a directory. 16 | Options -Indexes 17 | 18 | # Set the default handler. 19 | DirectoryIndex index.php index.html index.htm 20 | 21 | # Add correct encoding for SVGZ. 22 | AddType image/svg+xml svg svgz 23 | AddEncoding gzip svgz 24 | 25 | # Most of the following PHP settings cannot be changed at runtime. See 26 | # sites/default/default.settings.php and 27 | # Drupal\Core\DrupalKernel::bootEnvironment() for settings that can be 28 | # changed at runtime. 29 | 30 | php_value assert.active 0 31 | 32 | 33 | # Requires mod_expires to be enabled. 34 | 35 | # Enable expirations. 36 | ExpiresActive On 37 | 38 | # Cache all files and redirects for 2 weeks after access (A). 39 | ExpiresDefault A1209600 40 | 41 | 42 | # Do not allow PHP scripts to be cached unless they explicitly send cache 43 | # headers themselves. Otherwise all scripts would have to overwrite the 44 | # headers set by mod_expires if they want another caching behavior. This may 45 | # fail if an error occurs early in the bootstrap process, and it may cause 46 | # problems if a non-Drupal PHP file is installed in a subdirectory. 47 | ExpiresActive Off 48 | 49 | 50 | 51 | # Set a fallback resource if mod_rewrite is not enabled. This allows Drupal to 52 | # work without clean URLs. This requires Apache version >= 2.2.16. If Drupal is 53 | # not accessed by the top level URL (i.e.: http://example.com/drupal/ instead of 54 | # http://example.com/), the path to index.php will need to be adjusted. 55 | 56 | FallbackResource /index.php 57 | 58 | 59 | # Various rewrite rules. 60 | 61 | RewriteEngine on 62 | 63 | # Set "protossl" to "s" if we were accessed via https://. This is used later 64 | # if you enable "www." stripping or enforcement, in order to ensure that 65 | # you don't bounce between http and https. 66 | RewriteRule ^ - [E=protossl] 67 | RewriteCond %{HTTPS} on 68 | RewriteRule ^ - [E=protossl:s] 69 | 70 | # Make sure Authorization HTTP header is available to PHP 71 | # even when running as CGI or FastCGI. 72 | RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 73 | 74 | # Block access to "hidden" directories whose names begin with a period. This 75 | # includes directories used by version control systems such as Subversion or 76 | # Git to store control files. Files whose names begin with a period, as well 77 | # as the control files used by CVS, are protected by the FilesMatch directive 78 | # above. 79 | # 80 | # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is 81 | # not possible to block access to entire directories from .htaccess because 82 | # is not allowed here. 83 | # 84 | # If you do not have mod_rewrite installed, you should remove these 85 | # directories from your webroot or otherwise protect them from being 86 | # downloaded. 87 | RewriteRule "/\.|^\.(?!well-known/)" - [F] 88 | 89 | # If your site can be accessed both with and without the 'www.' prefix, you 90 | # can use one of the following settings to redirect users to your preferred 91 | # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: 92 | # 93 | # To redirect all users to access the site WITH the 'www.' prefix, 94 | # (http://example.com/foo will be redirected to http://www.example.com/foo) 95 | # uncomment the following: 96 | # RewriteCond %{HTTP_HOST} . 97 | # RewriteCond %{HTTP_HOST} !^www\. [NC] 98 | # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 99 | # 100 | # To redirect all users to access the site WITHOUT the 'www.' prefix, 101 | # (http://www.example.com/foo will be redirected to http://example.com/foo) 102 | # uncomment the following: 103 | # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 104 | # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] 105 | 106 | # Modify the RewriteBase if you are using Drupal in a subdirectory or in a 107 | # VirtualDocumentRoot and the rewrite rules are not working properly. 108 | # For example if your site is at http://example.com/drupal uncomment and 109 | # modify the following line: 110 | # RewriteBase /drupal 111 | # 112 | # If your site is running in a VirtualDocumentRoot at http://example.com/, 113 | # uncomment the following line: 114 | # RewriteBase / 115 | 116 | # Redirect common PHP files to their new locations. 117 | RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR] 118 | RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php) 119 | RewriteCond %{REQUEST_URI} !core 120 | RewriteRule ^ %1/core/%2 [L,QSA,R=301] 121 | 122 | # Rewrite install.php during installation to see if mod_rewrite is working 123 | RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L] 124 | 125 | # Pass all requests not referring directly to files in the filesystem to 126 | # index.php. 127 | RewriteCond %{REQUEST_FILENAME} !-f 128 | RewriteCond %{REQUEST_FILENAME} !-d 129 | RewriteCond %{REQUEST_URI} !=/favicon.ico 130 | RewriteRule ^ index.php [L] 131 | 132 | # For security reasons, deny access to other PHP files on public sites. 133 | # Note: The following URI conditions are not anchored at the start (^), 134 | # because Drupal may be located in a subdirectory. To further improve 135 | # security, you can replace '!/' with '!^/'. 136 | # Allow access to PHP files in /core (like authorize.php or install.php): 137 | RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$ 138 | # Allow access to test-specific PHP files: 139 | RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php 140 | # Allow access to Statistics module's custom front controller. 141 | # Copy and adapt this rule to directly execute PHP files in contributed or 142 | # custom modules or to run another PHP application in the same directory. 143 | RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$ 144 | # Deny access to any other PHP files that do not match the rules above. 145 | # Specifically, disallow autoload.php from being served directly. 146 | RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F] 147 | 148 | # Rules to correctly serve gzip compressed CSS and JS files. 149 | # Requires both mod_rewrite and mod_headers to be enabled. 150 | 151 | # Serve gzip compressed CSS files if they exist and the client accepts gzip. 152 | RewriteCond %{HTTP:Accept-encoding} gzip 153 | RewriteCond %{REQUEST_FILENAME}\.gz -s 154 | RewriteRule ^(.*css_[a-zA-Z0-9-_]+)\.css$ $1\.css\.gz [QSA] 155 | 156 | # Serve gzip compressed JS files if they exist and the client accepts gzip. 157 | RewriteCond %{HTTP:Accept-encoding} gzip 158 | RewriteCond %{REQUEST_FILENAME}\.gz -s 159 | RewriteRule ^(.*js_[a-zA-Z0-9-_]+)\.js$ $1\.js\.gz [QSA] 160 | 161 | # Serve correct content types, and prevent double compression. 162 | RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1] 163 | RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=no-brotli:1] 164 | 165 | 166 | # Serve correct encoding type. 167 | Header set Content-Encoding gzip 168 | # Force proxies to cache gzipped & non-gzipped css/js files separately. 169 | Header append Vary Accept-Encoding 170 | 171 | 172 | 173 | 174 | # Various header fixes. 175 | 176 | # Disable content sniffing, since it's an attack vector. 177 | Header always set X-Content-Type-Options nosniff 178 | # Disable Proxy header, since it's an attack vector. 179 | RequestHeader unset Proxy 180 | 181 | -------------------------------------------------------------------------------- /web/INSTALL.txt: -------------------------------------------------------------------------------- 1 | 2 | Please read core/INSTALL.txt for detailed installation instructions for your 3 | Drupal website. 4 | -------------------------------------------------------------------------------- /web/autoload.php: -------------------------------------------------------------------------------- 1 | handle($request); 20 | $response->send(); 21 | 22 | $kernel->terminate($request, $response); 23 | -------------------------------------------------------------------------------- /web/robots.txt: -------------------------------------------------------------------------------- 1 | # 2 | # robots.txt 3 | # 4 | # This file is to prevent the crawling and indexing of certain parts 5 | # of your site by web crawlers and spiders run by sites like Yahoo! 6 | # and Google. By telling these "robots" where not to go on your site, 7 | # you save bandwidth and server resources. 8 | # 9 | # This file will be ignored unless it is at the root of your host: 10 | # Used: http://example.com/robots.txt 11 | # Ignored: http://example.com/site/robots.txt 12 | # 13 | # For more information about the robots.txt standard, see: 14 | # http://www.robotstxt.org/robotstxt.html 15 | 16 | User-agent: * 17 | # CSS, JS, Images 18 | Allow: /core/*.css$ 19 | Allow: /core/*.css? 20 | Allow: /core/*.js$ 21 | Allow: /core/*.js? 22 | Allow: /core/*.gif 23 | Allow: /core/*.jpg 24 | Allow: /core/*.jpeg 25 | Allow: /core/*.png 26 | Allow: /core/*.svg 27 | Allow: /profiles/*.css$ 28 | Allow: /profiles/*.css? 29 | Allow: /profiles/*.js$ 30 | Allow: /profiles/*.js? 31 | Allow: /profiles/*.gif 32 | Allow: /profiles/*.jpg 33 | Allow: /profiles/*.jpeg 34 | Allow: /profiles/*.png 35 | Allow: /profiles/*.svg 36 | # Directories 37 | Disallow: /core/ 38 | Disallow: /profiles/ 39 | # Files 40 | Disallow: /README.txt 41 | Disallow: /web.config 42 | # Paths (clean URLs) 43 | Disallow: /admin/ 44 | Disallow: /comment/reply/ 45 | Disallow: /filter/tips 46 | Disallow: /node/add/ 47 | Disallow: /search/ 48 | Disallow: /user/register 49 | Disallow: /user/password 50 | Disallow: /user/login 51 | Disallow: /user/logout 52 | Disallow: /media/oembed 53 | Disallow: /*/media/oembed 54 | # Paths (no clean URLs) 55 | Disallow: /index.php/admin/ 56 | Disallow: /index.php/comment/reply/ 57 | Disallow: /index.php/filter/tips 58 | Disallow: /index.php/node/add/ 59 | Disallow: /index.php/search/ 60 | Disallow: /index.php/user/password 61 | Disallow: /index.php/user/register 62 | Disallow: /index.php/user/login 63 | Disallow: /index.php/user/logout 64 | Disallow: /index.php/media/oembed 65 | Disallow: /index.php/*/media/oembed 66 | -------------------------------------------------------------------------------- /web/sites/default/default.services.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | session.storage.options: 3 | # Default ini options for sessions. 4 | # 5 | # Some distributions of Linux (most notably Debian) ship their PHP 6 | # installations with garbage collection (gc) disabled. Since Drupal depends 7 | # on PHP's garbage collection for clearing sessions, ensure that garbage 8 | # collection occurs by using the most common settings. 9 | # @default 1 10 | gc_probability: 1 11 | # @default 100 12 | gc_divisor: 100 13 | # 14 | # Set session lifetime (in seconds), i.e. the grace period for session 15 | # data. Sessions are deleted by the session garbage collector after one 16 | # session lifetime has elapsed since the user's last visit. When a session 17 | # is deleted, authenticated users are logged out, and the contents of the 18 | # user's session is discarded. 19 | # @default 200000 20 | gc_maxlifetime: 200000 21 | # 22 | # Set session cookie lifetime (in seconds), i.e. the time from the session 23 | # is created to the cookie expires, i.e. when the browser is expected to 24 | # discard the cookie. The value 0 means "until the browser is closed". 25 | # @default 2000000 26 | cookie_lifetime: 2000000 27 | # 28 | # Drupal automatically generates a unique session cookie name based on the 29 | # full domain name used to access the site. This mechanism is sufficient 30 | # for most use-cases, including multi-site deployments. However, if it is 31 | # desired that a session can be reused across different subdomains, the 32 | # cookie domain needs to be set to the shared base domain. Doing so assures 33 | # that users remain logged in as they cross between various subdomains. 34 | # To maximize compatibility and normalize the behavior across user agents, 35 | # the cookie domain should start with a dot. 36 | # 37 | # @default none 38 | # cookie_domain: '.example.com' 39 | # 40 | # Set the session ID string length. The length can be between 22 to 256. The 41 | # PHP recommended value is 48. See 42 | # https://www.php.net/manual/session.security.ini.php for more information. 43 | # This value should be kept in sync with 44 | # \Drupal\Core\Session\SessionConfiguration::__construct() 45 | # @default 48 46 | sid_length: 48 47 | # 48 | # Set the number of bits in encoded session ID character. The possible 49 | # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", 50 | # ","). The PHP recommended value is 6. See 51 | # https://www.php.net/manual/session.security.ini.php for more information. 52 | # This value should be kept in sync with 53 | # \Drupal\Core\Session\SessionConfiguration::__construct() 54 | # @default 6 55 | sid_bits_per_character: 6 56 | twig.config: 57 | # Twig debugging: 58 | # 59 | # When debugging is enabled: 60 | # - The markup of each Twig template is surrounded by HTML comments that 61 | # contain theming information, such as template file name suggestions. 62 | # - Note that this debugging markup will cause automated tests that directly 63 | # check rendered HTML to fail. When running automated tests, 'debug' 64 | # should be set to FALSE. 65 | # - The dump() function can be used in Twig templates to output information 66 | # about template variables. 67 | # - Twig templates are automatically recompiled whenever the source code 68 | # changes (see auto_reload below). 69 | # 70 | # For more information about debugging Twig templates, see 71 | # https://www.drupal.org/node/1906392. 72 | # 73 | # Enabling Twig debugging is not recommended in production environments. 74 | # @default false 75 | debug: false 76 | # Twig auto-reload: 77 | # 78 | # Automatically recompile Twig templates whenever the source code changes. 79 | # If you don't provide a value for auto_reload, it will be determined 80 | # based on the value of debug. 81 | # 82 | # Enabling auto-reload is not recommended in production environments. 83 | # @default null 84 | auto_reload: null 85 | # Twig cache: 86 | # 87 | # By default, Twig templates will be compiled and stored in the filesystem 88 | # to increase performance. Disabling the Twig cache will recompile the 89 | # templates from source each time they are used. In most cases the 90 | # auto_reload setting above should be enabled rather than disabling the 91 | # Twig cache. 92 | # 93 | # Disabling the Twig cache is not recommended in production environments. 94 | # @default true 95 | cache: true 96 | # File extensions: 97 | # 98 | # List of file extensions the Twig system is allowed to load via the 99 | # twig.loader.filesystem service. Files with other extensions will not be 100 | # loaded unless they are added here. For example, to allow a file named 101 | # 'example.partial' to be loaded, add 'partial' to this list. To load files 102 | # with no extension, add an empty string '' to the list. 103 | # 104 | # @default ['css', 'html', 'js', 'svg', 'twig'] 105 | allowed_file_extensions: 106 | - css 107 | - html 108 | - js 109 | - svg 110 | - twig 111 | renderer.config: 112 | # Renderer required cache contexts: 113 | # 114 | # The Renderer will automatically associate these cache contexts with every 115 | # render array, hence varying every render array by these cache contexts. 116 | # 117 | # @default ['languages:language_interface', 'theme', 'user.permissions'] 118 | required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] 119 | # Renderer automatic placeholdering conditions: 120 | # 121 | # Drupal allows portions of the page to be automatically deferred when 122 | # rendering to improve cache performance. That is especially helpful for 123 | # cache contexts that vary widely, such as the active user. On some sites 124 | # those may be different, however, such as sites with only a handful of 125 | # users. If you know what the high-cardinality cache contexts are for your 126 | # site, specify those here. If you're not sure, the defaults are fairly safe 127 | # in general. 128 | # 129 | # For more information about rendering optimizations see 130 | # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing 131 | auto_placeholder_conditions: 132 | # Max-age at or below which caching is not considered worthwhile. 133 | # 134 | # Disable by setting to -1. 135 | # 136 | # @default 0 137 | max-age: 0 138 | # Cache contexts with a high cardinality. 139 | # 140 | # Disable by setting to []. 141 | # 142 | # @default ['session', 'user'] 143 | contexts: ['session', 'user'] 144 | # Tags with a high invalidation frequency. 145 | # 146 | # Disable by setting to []. 147 | # 148 | # @default [] 149 | tags: [] 150 | # Renderer cache debug: 151 | # 152 | # Allows cache debugging output for each rendered element. 153 | # 154 | # Enabling render cache debugging is not recommended in production 155 | # environments. 156 | # @default false 157 | debug: false 158 | # Cacheability debugging: 159 | # 160 | # Responses with cacheability metadata (CacheableResponseInterface instances) 161 | # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age 162 | # headers. 163 | # 164 | # For more information about debugging cacheable responses, see 165 | # https://www.drupal.org/developing/api/8/response/cacheable-response-interface 166 | # 167 | # Enabling cacheability debugging is not recommended in production 168 | # environments. 169 | # @default false 170 | http.response.debug_cacheability_headers: false 171 | factory.keyvalue: {} 172 | # Default key/value storage service to use. 173 | # @default keyvalue.database 174 | # default: keyvalue.database 175 | # Collection-specific overrides. 176 | # state: keyvalue.database 177 | factory.keyvalue.expirable: {} 178 | # Default key/value expirable storage service to use. 179 | # @default keyvalue.database.expirable 180 | # default: keyvalue.database.expirable 181 | # Allowed protocols for URL generation. 182 | filter_protocols: 183 | - http 184 | - https 185 | - ftp 186 | - news 187 | - nntp 188 | - tel 189 | - telnet 190 | - mailto 191 | - irc 192 | - ssh 193 | - sftp 194 | - webcal 195 | - rtsp 196 | 197 | # Configure Cross-Site HTTP requests (CORS). 198 | # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 199 | # for more information about the topic in general. 200 | # Note: By default the configuration is disabled. 201 | cors.config: 202 | enabled: false 203 | # Specify allowed headers, like 'x-allowed-header'. 204 | allowedHeaders: [] 205 | # Specify allowed request methods, specify ['*'] to allow all possible ones. 206 | allowedMethods: [] 207 | # Configure requests allowed from specific origins. Do not include trailing 208 | # slashes with URLs. 209 | allowedOrigins: ['*'] 210 | # Sets the Access-Control-Expose-Headers header. 211 | exposedHeaders: false 212 | # Sets the Access-Control-Max-Age header. 213 | maxAge: false 214 | # Sets the Access-Control-Allow-Credentials header. 215 | supportsCredentials: false 216 | -------------------------------------------------------------------------------- /web/sites/default/default.settings.php: -------------------------------------------------------------------------------- 1 | 'databasename', 81 | * 'username' => 'sqlusername', 82 | * 'password' => 'sqlpassword', 83 | * 'host' => 'localhost', 84 | * 'port' => '3306', 85 | * 'driver' => 'mysql', 86 | * 'prefix' => '', 87 | * 'collation' => 'utf8mb4_general_ci', 88 | * ]; 89 | * @endcode 90 | */ 91 | $databases = []; 92 | 93 | /** 94 | * Customizing database settings. 95 | * 96 | * Many of the values of the $databases array can be customized for your 97 | * particular database system. Refer to the sample in the section above as a 98 | * starting point. 99 | * 100 | * The "driver" property indicates what Drupal database driver the 101 | * connection should use. This is usually the same as the name of the 102 | * database type, such as mysql or sqlite, but not always. The other 103 | * properties will vary depending on the driver. For SQLite, you must 104 | * specify a database file name in a directory that is writable by the 105 | * webserver. For most other drivers, you must specify a 106 | * username, password, host, and database name. 107 | * 108 | * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers 109 | * can be provided by contributed or custom modules. To use a contributed or 110 | * custom driver, the "namespace" property must be set to the namespace of the 111 | * driver. The code in this namespace must be autoloadable prior to connecting 112 | * to the database, and therefore, prior to when module root namespaces are 113 | * added to the autoloader. To add the driver's namespace to the autoloader, 114 | * set the "autoload" property to the PSR-4 base directory of the driver's 115 | * namespace. This is optional for projects managed with Composer if the 116 | * driver's namespace is in Composer's autoloader. 117 | * 118 | * For each database, you may optionally specify multiple "target" databases. 119 | * A target database allows Drupal to try to send certain queries to a 120 | * different database if it can but fall back to the default connection if not. 121 | * That is useful for primary/replica replication, as Drupal may try to connect 122 | * to a replica server when appropriate and if one is not available will simply 123 | * fall back to the single primary server (The terms primary/replica are 124 | * traditionally referred to as master/slave in database server documentation). 125 | * 126 | * The general format for the $databases array is as follows: 127 | * @code 128 | * $databases['default']['default'] = $info_array; 129 | * $databases['default']['replica'][] = $info_array; 130 | * $databases['default']['replica'][] = $info_array; 131 | * $databases['extra']['default'] = $info_array; 132 | * @endcode 133 | * 134 | * In the above example, $info_array is an array of settings described above. 135 | * The first line sets a "default" database that has one primary database 136 | * (the second level default). The second and third lines create an array 137 | * of potential replica databases. Drupal will select one at random for a given 138 | * request as needed. The fourth line creates a new database with a name of 139 | * "extra". 140 | * 141 | * For MySQL, MariaDB or equivalent databases the 'isolation_level' option can 142 | * be set. The recommended transaction isolation level for Drupal sites is 143 | * 'READ COMMITTED'. The 'REPEATABLE READ' option is supported but can result 144 | * in deadlocks, the other two options are 'READ UNCOMMITTED' and 'SERIALIZABLE'. 145 | * They are available but not supported; use them at your own risk. For more 146 | * info: 147 | * https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html 148 | * 149 | * On your settings.php, change the isolation level: 150 | * @code 151 | * $databases['default']['default']['init_commands'] = [ 152 | * 'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', 153 | * ]; 154 | * @endcode 155 | * 156 | * You can optionally set a prefix for all database table names by using the 157 | * 'prefix' setting. If a prefix is specified, the table name will be prepended 158 | * with its value. Be sure to use valid database characters only, usually 159 | * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' 160 | * key or set its value to an empty string ''. 161 | * 162 | * For example, to have all database table prefixed with 'main_', set: 163 | * @code 164 | * 'prefix' => 'main_', 165 | * @endcode 166 | * 167 | * Advanced users can add or override initial commands to execute when 168 | * connecting to the database server, as well as PDO connection settings. For 169 | * example, to enable MySQL SELECT queries to exceed the max_join_size system 170 | * variable, and to reduce the database connection timeout to 5 seconds: 171 | * @code 172 | * $databases['default']['default'] = [ 173 | * 'init_commands' => [ 174 | * 'big_selects' => 'SET SQL_BIG_SELECTS=1', 175 | * ], 176 | * 'pdo' => [ 177 | * PDO::ATTR_TIMEOUT => 5, 178 | * ], 179 | * ]; 180 | * @endcode 181 | * 182 | * WARNING: The above defaults are designed for database portability. Changing 183 | * them may cause unexpected behavior, including potential data loss. See 184 | * https://www.drupal.org/developing/api/database/configuration for more 185 | * information on these defaults and the potential issues. 186 | * 187 | * More details can be found in the constructor methods for each driver: 188 | * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() 189 | * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() 190 | * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() 191 | * 192 | * Sample Database configuration format for PostgreSQL (pgsql): 193 | * @code 194 | * $databases['default']['default'] = [ 195 | * 'driver' => 'pgsql', 196 | * 'database' => 'databasename', 197 | * 'username' => 'sqlusername', 198 | * 'password' => 'sqlpassword', 199 | * 'host' => 'localhost', 200 | * 'prefix' => '', 201 | * ]; 202 | * @endcode 203 | * 204 | * Sample Database configuration format for SQLite (sqlite): 205 | * @code 206 | * $databases['default']['default'] = [ 207 | * 'driver' => 'sqlite', 208 | * 'database' => '/path/to/databasefilename', 209 | * ]; 210 | * @endcode 211 | * 212 | * Sample Database configuration format for a driver in a contributed module: 213 | * @code 214 | * $databases['default']['default'] = [ 215 | * 'driver' => 'my_driver', 216 | * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', 217 | * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', 218 | * 'database' => 'databasename', 219 | * 'username' => 'sqlusername', 220 | * 'password' => 'sqlpassword', 221 | * 'host' => 'localhost', 222 | * 'prefix' => '', 223 | * ]; 224 | * @endcode 225 | */ 226 | 227 | /** 228 | * Location of the site configuration files. 229 | * 230 | * The $settings['config_sync_directory'] specifies the location of file system 231 | * directory used for syncing configuration data. On install, the directory is 232 | * created. This is used for configuration imports. 233 | * 234 | * The default location for this directory is inside a randomly-named 235 | * directory in the public files path. The setting below allows you to set 236 | * its location. 237 | */ 238 | # $settings['config_sync_directory'] = '/directory/outside/webroot'; 239 | 240 | /** 241 | * Settings: 242 | * 243 | * $settings contains environment-specific configuration, such as the files 244 | * directory and reverse proxy address, and temporary configuration, such as 245 | * security overrides. 246 | * 247 | * @see \Drupal\Core\Site\Settings::get() 248 | */ 249 | 250 | /** 251 | * Salt for one-time login links, cancel links, form tokens, etc. 252 | * 253 | * This variable will be set to a random value by the installer. All one-time 254 | * login links will be invalidated if the value is changed. Note that if your 255 | * site is deployed on a cluster of web servers, you must ensure that this 256 | * variable has the same value on each server. 257 | * 258 | * For enhanced security, you may set this variable to the contents of a file 259 | * outside your document root; you should also ensure that this file is not 260 | * stored with backups of your database. 261 | * 262 | * Example: 263 | * @code 264 | * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); 265 | * @endcode 266 | */ 267 | $settings['hash_salt'] = ''; 268 | 269 | /** 270 | * Deployment identifier. 271 | * 272 | * Drupal's dependency injection container will be automatically invalidated and 273 | * rebuilt when the Drupal core version changes. When updating contributed or 274 | * custom code that changes the container, changing this identifier will also 275 | * allow the container to be invalidated as soon as code is deployed. 276 | */ 277 | # $settings['deployment_identifier'] = \Drupal::VERSION; 278 | 279 | /** 280 | * Access control for update.php script. 281 | * 282 | * If you are updating your Drupal installation using the update.php script but 283 | * are not logged in using either an account with the "Administer software 284 | * updates" permission or the site maintenance account (the account that was 285 | * created during installation), you will need to modify the access check 286 | * statement below. Change the FALSE to a TRUE to disable the access check. 287 | * After finishing the upgrade, be sure to open this file again and change the 288 | * TRUE back to a FALSE! 289 | */ 290 | $settings['update_free_access'] = FALSE; 291 | 292 | /** 293 | * Fallback to HTTP for Update Manager and for fetching security advisories. 294 | * 295 | * If your site fails to connect to updates.drupal.org over HTTPS (either when 296 | * fetching data on available updates, or when fetching the feed of critical 297 | * security announcements), you may uncomment this setting and set it to TRUE to 298 | * allow an insecure fallback to HTTP. Note that doing so will open your site up 299 | * to a potential man-in-the-middle attack. You should instead attempt to 300 | * resolve the issues before enabling this option. 301 | * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl 302 | * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack 303 | * @see \Drupal\update\UpdateFetcher 304 | * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher 305 | */ 306 | # $settings['update_fetch_with_http_fallback'] = TRUE; 307 | 308 | /** 309 | * External access proxy settings: 310 | * 311 | * If your site must access the Internet via a web proxy then you can enter the 312 | * proxy settings here. Set the full URL of the proxy, including the port, in 313 | * variables: 314 | * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP 315 | * requests. 316 | * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS 317 | * requests. 318 | * You can pass in the user name and password for basic authentication in the 319 | * URLs in these settings. 320 | * 321 | * You can also define an array of host names that can be accessed directly, 322 | * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. 323 | */ 324 | # $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; 325 | # $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; 326 | # $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; 327 | 328 | /** 329 | * Reverse Proxy Configuration: 330 | * 331 | * Reverse proxy servers are often used to enhance the performance 332 | * of heavily visited sites and may also provide other site caching, 333 | * security, or encryption benefits. In an environment where Drupal 334 | * is behind a reverse proxy, the real IP address of the client should 335 | * be determined such that the correct client IP address is available 336 | * to Drupal's logging, statistics, and access management systems. In 337 | * the most simple scenario, the proxy server will add an 338 | * X-Forwarded-For header to the request that contains the client IP 339 | * address. However, HTTP headers are vulnerable to spoofing, where a 340 | * malicious client could bypass restrictions by setting the 341 | * X-Forwarded-For header directly. Therefore, Drupal's proxy 342 | * configuration requires the IP addresses of all remote proxies to be 343 | * specified in $settings['reverse_proxy_addresses'] to work correctly. 344 | * 345 | * Enable this setting to get Drupal to determine the client IP from the 346 | * X-Forwarded-For header. If you are unsure about this setting, do not have a 347 | * reverse proxy, or Drupal operates in a shared hosting environment, this 348 | * setting should remain commented out. 349 | * 350 | * In order for this setting to be used you must specify every possible 351 | * reverse proxy IP address in $settings['reverse_proxy_addresses']. 352 | * If a complete list of reverse proxies is not available in your 353 | * environment (for example, if you use a CDN) you may set the 354 | * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. 355 | * Be aware, however, that it is likely that this would allow IP 356 | * address spoofing unless more advanced precautions are taken. 357 | */ 358 | # $settings['reverse_proxy'] = TRUE; 359 | 360 | /** 361 | * Reverse proxy addresses. 362 | * 363 | * Specify every reverse proxy IP address in your environment, as an array of 364 | * IPv4/IPv6 addresses or subnets in CIDR notation. This setting is required if 365 | * $settings['reverse_proxy'] is TRUE. 366 | */ 367 | # $settings['reverse_proxy_addresses'] = ['a.b.c.d', 'e.f.g.h/24', ...]; 368 | 369 | /** 370 | * Reverse proxy trusted headers. 371 | * 372 | * Sets which headers to trust from your reverse proxy. 373 | * 374 | * Common values are: 375 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 376 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 377 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 378 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 379 | * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 380 | * 381 | * Note the default value of 382 | * @code 383 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 384 | * @endcode 385 | * is not secure by default. The value should be set to only the specific 386 | * headers the reverse proxy uses. For example: 387 | * @code 388 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 389 | * @endcode 390 | * This would trust the following headers: 391 | * - X_FORWARDED_FOR 392 | * - X_FORWARDED_HOST 393 | * - X_FORWARDED_PROTO 394 | * - X_FORWARDED_PORT 395 | * 396 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 397 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 398 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 399 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 400 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 401 | * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies 402 | */ 403 | # $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; 404 | 405 | 406 | /** 407 | * Page caching: 408 | * 409 | * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page 410 | * views. This tells a HTTP proxy that it may return a page from its local 411 | * cache without contacting the web server, if the user sends the same Cookie 412 | * header as the user who originally requested the cached page. Without "Vary: 413 | * Cookie", authenticated users would also be served the anonymous page from 414 | * the cache. If the site has mostly anonymous users except a few known 415 | * editors/administrators, the Vary header can be omitted. This allows for 416 | * better caching in HTTP proxies (including reverse proxies), i.e. even if 417 | * clients send different cookies, they still get content served from the cache. 418 | * However, authenticated users should access the site directly (i.e. not use an 419 | * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid 420 | * getting cached pages from the proxy. 421 | */ 422 | # $settings['omit_vary_cookie'] = TRUE; 423 | 424 | 425 | /** 426 | * Cache TTL for client error (4xx) responses. 427 | * 428 | * Items cached per-URL tend to result in a large number of cache items, and 429 | * this can be problematic on 404 pages which by their nature are unbounded. A 430 | * fixed TTL can be set for these items, defaulting to one hour, so that cache 431 | * backends which do not support LRU can purge older entries. To disable caching 432 | * of client error responses set the value to 0. Currently applies only to 433 | * page_cache module. 434 | */ 435 | # $settings['cache_ttl_4xx'] = 3600; 436 | 437 | /** 438 | * Expiration of cached forms. 439 | * 440 | * Drupal's Form API stores details of forms in a cache and these entries are 441 | * kept for at least 6 hours by default. Expired entries are cleared by cron. 442 | * 443 | * @see \Drupal\Core\Form\FormCache::setCache() 444 | */ 445 | # $settings['form_cache_expiration'] = 21600; 446 | 447 | /** 448 | * Class Loader. 449 | * 450 | * If the APCu extension is detected, the classloader will be optimized to use 451 | * it. Set to FALSE to disable this. 452 | * 453 | * @see https://getcomposer.org/doc/articles/autoloader-optimization.md 454 | */ 455 | # $settings['class_loader_auto_detect'] = FALSE; 456 | 457 | /** 458 | * Authorized file system operations: 459 | * 460 | * The Update Manager module included with Drupal provides a mechanism for 461 | * site administrators to securely install missing updates for the site 462 | * directly through the web user interface. On securely-configured servers, 463 | * the Update manager will require the administrator to provide SSH or FTP 464 | * credentials before allowing the installation to proceed; this allows the 465 | * site to update the new files as the user who owns all the Drupal files, 466 | * instead of as the user the webserver is running as. On servers where the 467 | * webserver user is itself the owner of the Drupal files, the administrator 468 | * will not be prompted for SSH or FTP credentials (note that these server 469 | * setups are common on shared hosting, but are inherently insecure). 470 | * 471 | * Some sites might wish to disable the above functionality, and only update 472 | * the code directly via SSH or FTP themselves. This setting completely 473 | * disables all functionality related to these authorized file operations. 474 | * 475 | * @see https://www.drupal.org/node/244924 476 | * 477 | * Remove the leading hash signs to disable. 478 | */ 479 | # $settings['allow_authorize_operations'] = FALSE; 480 | 481 | /** 482 | * Default mode for directories and files written by Drupal. 483 | * 484 | * Value should be in PHP Octal Notation, with leading zero. 485 | */ 486 | # $settings['file_chmod_directory'] = 0775; 487 | # $settings['file_chmod_file'] = 0664; 488 | 489 | /** 490 | * Public file base URL: 491 | * 492 | * An alternative base URL to be used for serving public files. This must 493 | * include any leading directory path. 494 | * 495 | * A different value from the domain used by Drupal to be used for accessing 496 | * public files. This can be used for a simple CDN integration, or to improve 497 | * security by serving user-uploaded files from a different domain or subdomain 498 | * pointing to the same server. Do not include a trailing slash. 499 | */ 500 | # $settings['file_public_base_url'] = 'http://downloads.example.com/files'; 501 | 502 | /** 503 | * Public file path: 504 | * 505 | * A local file system path where public files will be stored. This directory 506 | * must exist and be writable by Drupal. This directory must be relative to 507 | * the Drupal installation directory and be accessible over the web. 508 | */ 509 | # $settings['file_public_path'] = 'sites/default/files'; 510 | 511 | /** 512 | * Additional public file schemes: 513 | * 514 | * Public schemes are URI schemes that allow download access to all users for 515 | * all files within that scheme. 516 | * 517 | * The "public" scheme is always public, and the "private" scheme is always 518 | * private, but other schemes, such as "https", "s3", "example", or others, 519 | * can be either public or private depending on the site. By default, they're 520 | * private, and access to individual files is controlled via 521 | * hook_file_download(). 522 | * 523 | * Typically, if a scheme should be public, a module makes it public by 524 | * implementing hook_file_download(), and granting access to all users for all 525 | * files. This could be either the same module that provides the stream wrapper 526 | * for the scheme, or a different module that decides to make the scheme 527 | * public. However, in cases where a site needs to make a scheme public, but 528 | * is unable to add code in a module to do so, the scheme may be added to this 529 | * variable, the result of which is that system_file_download() grants public 530 | * access to all files within that scheme. 531 | */ 532 | # $settings['file_additional_public_schemes'] = ['example']; 533 | 534 | /** 535 | * File schemes whose paths should not be normalized: 536 | * 537 | * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order 538 | * to prevent unintended file access. For example, 'private://css/../image.png' 539 | * is normalized to 'private://image.png' before checking access to the file. 540 | * 541 | * On Windows, Drupal also replaces '\' with '/' in URIs for the local 542 | * filesystem. 543 | * 544 | * If file URIs with one or more scheme should not be normalized like this, then 545 | * list the schemes here. For example, if 'porcelain://china/./plate.png' should 546 | * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to 547 | * this array. In this case, make sure that the module providing the 'porcelain' 548 | * scheme does not allow unintended file access when using '/../' to move up the 549 | * directory tree. 550 | */ 551 | # $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; 552 | 553 | /** 554 | * Private file path: 555 | * 556 | * A local file system path where private files will be stored. This directory 557 | * must be absolute, outside of the Drupal installation directory and not 558 | * accessible over the web. 559 | * 560 | * Note: Caches need to be cleared when this value is changed to make the 561 | * private:// stream wrapper available to the system. 562 | * 563 | * See https://www.drupal.org/documentation/modules/file for more information 564 | * about securing private files. 565 | */ 566 | # $settings['file_private_path'] = ''; 567 | 568 | /** 569 | * Temporary file path: 570 | * 571 | * A local file system path where temporary files will be stored. This directory 572 | * must be absolute, outside of the Drupal installation directory and not 573 | * accessible over the web. 574 | * 575 | * If this is not set, the default for the operating system will be used. 576 | * 577 | * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() 578 | */ 579 | # $settings['file_temp_path'] = '/tmp'; 580 | 581 | /** 582 | * Session write interval: 583 | * 584 | * Set the minimum interval between each session write to database. 585 | * For performance reasons it defaults to 180. 586 | */ 587 | # $settings['session_write_interval'] = 180; 588 | 589 | /** 590 | * String overrides: 591 | * 592 | * To override specific strings on your site with or without enabling the Locale 593 | * module, add an entry to this list. This functionality allows you to change 594 | * a small number of your site's default English language interface strings. 595 | * 596 | * Remove the leading hash signs to enable. 597 | * 598 | * The "en" part of the variable name, is dynamic and can be any langcode of 599 | * any added language. (eg locale_custom_strings_de for german). 600 | */ 601 | # $settings['locale_custom_strings_en'][''] = [ 602 | # 'forum' => 'Discussion board', 603 | # '@count min' => '@count minutes', 604 | # ]; 605 | 606 | /** 607 | * A custom theme for the offline page: 608 | * 609 | * This applies when the site is explicitly set to maintenance mode through the 610 | * administration page or when the database is inactive due to an error. 611 | * The template file should also be copied into the theme. It is located inside 612 | * 'core/modules/system/templates/maintenance-page.html.twig'. 613 | * 614 | * Note: This setting does not apply to installation and update pages. 615 | */ 616 | # $settings['maintenance_theme'] = 'claro'; 617 | 618 | /** 619 | * PHP settings: 620 | * 621 | * To see what PHP settings are possible, including whether they can be set at 622 | * runtime (by using ini_set()), read the PHP documentation: 623 | * http://php.net/manual/ini.list.php 624 | * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime 625 | * settings and the .htaccess file for non-runtime settings. 626 | * Settings defined there should not be duplicated here so as to avoid conflict 627 | * issues. 628 | */ 629 | 630 | /** 631 | * If you encounter a situation where users post a large amount of text, and 632 | * the result is stripped out upon viewing but can still be edited, Drupal's 633 | * output filter may not have sufficient memory to process it. If you 634 | * experience this issue, you may wish to uncomment the following two lines 635 | * and increase the limits of these variables. For more information, see 636 | * http://php.net/manual/pcre.configuration.php. 637 | */ 638 | # ini_set('pcre.backtrack_limit', 200000); 639 | # ini_set('pcre.recursion_limit', 200000); 640 | 641 | /** 642 | * Configuration overrides. 643 | * 644 | * To globally override specific configuration values for this site, 645 | * set them here. You usually don't need to use this feature. This is 646 | * useful in a configuration file for a vhost or directory, rather than 647 | * the default settings.php. 648 | * 649 | * Note that any values you provide in these variable overrides will not be 650 | * viewable from the Drupal administration interface. The administration 651 | * interface displays the values stored in configuration so that you can stage 652 | * changes to other environments that don't have the overrides. 653 | * 654 | * There are particular configuration values that are risky to override. For 655 | * example, overriding the list of installed modules in 'core.extension' is not 656 | * supported as module install or uninstall has not occurred. Other examples 657 | * include field storage configuration, because it has effects on database 658 | * structure, and 'core.menu.static_menu_link_overrides' since this is cached in 659 | * a way that is not config override aware. Also, note that changing 660 | * configuration values in settings.php will not fire any of the configuration 661 | * change events. 662 | */ 663 | # $config['system.site']['name'] = 'My Drupal site'; 664 | # $config['user.settings']['anonymous'] = 'Visitor'; 665 | 666 | /** 667 | * Load services definition file. 668 | */ 669 | $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; 670 | 671 | /** 672 | * Override the default service container class. 673 | * 674 | * This is useful for example to trace the service container for performance 675 | * tracking purposes, for testing a service container with an error condition or 676 | * to test a service container that throws an exception. 677 | */ 678 | # $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; 679 | 680 | /** 681 | * Override the default yaml parser class. 682 | * 683 | * Provide a fully qualified class name here if you would like to provide an 684 | * alternate implementation YAML parser. The class must implement the 685 | * \Drupal\Component\Serialization\SerializationInterface interface. 686 | */ 687 | # $settings['yaml_parser_class'] = NULL; 688 | 689 | /** 690 | * Trusted host configuration. 691 | * 692 | * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host 693 | * header spoofing. 694 | * 695 | * To enable the trusted host mechanism, you enable your allowable hosts 696 | * in $settings['trusted_host_patterns']. This should be an array of regular 697 | * expression patterns, without delimiters, representing the hosts you would 698 | * like to allow. 699 | * 700 | * For example: 701 | * @code 702 | * $settings['trusted_host_patterns'] = [ 703 | * '^www\.example\.com$', 704 | * ]; 705 | * @endcode 706 | * will allow the site to only run from www.example.com. 707 | * 708 | * If you are running multisite, or if you are running your site from 709 | * different domain names (eg, you don't redirect http://www.example.com to 710 | * http://example.com), you should specify all of the host patterns that are 711 | * allowed by your site. 712 | * 713 | * For example: 714 | * @code 715 | * $settings['trusted_host_patterns'] = [ 716 | * '^example\.com$', 717 | * '^.+\.example\.com$', 718 | * '^example\.org$', 719 | * '^.+\.example\.org$', 720 | * ]; 721 | * @endcode 722 | * will allow the site to run off of all variants of example.com and 723 | * example.org, with all subdomains included. 724 | * 725 | * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings 726 | */ 727 | 728 | /** 729 | * The default list of directories that will be ignored by Drupal's file API. 730 | * 731 | * By default ignore node_modules and bower_components folders to avoid issues 732 | * with common frontend tools and recursive scanning of directories looking for 733 | * extensions. 734 | * 735 | * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() 736 | * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() 737 | */ 738 | $settings['file_scan_ignore_directories'] = [ 739 | 'node_modules', 740 | 'bower_components', 741 | ]; 742 | 743 | /** 744 | * The default number of entities to update in a batch process. 745 | * 746 | * This is used by update and post-update functions that need to go through and 747 | * change all the entities on a site, so it is useful to increase this number 748 | * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a 749 | * larger number of entities to be processed in a single batch run. 750 | */ 751 | $settings['entity_update_batch_size'] = 50; 752 | 753 | /** 754 | * Entity update backup. 755 | * 756 | * This is used to inform the entity storage handler that the backup tables as 757 | * well as the original entity type and field storage definitions should be 758 | * retained after a successful entity update process. 759 | */ 760 | $settings['entity_update_backup'] = TRUE; 761 | 762 | /** 763 | * Node migration type. 764 | * 765 | * This is used to force the migration system to use the classic node migrations 766 | * instead of the default complete node migrations. The migration system will 767 | * use the classic node migration only if there are existing migrate_map tables 768 | * for the classic node migrations and they contain data. These tables may not 769 | * exist if you are developing custom migrations and do not want to use the 770 | * complete node migrations. Set this to TRUE to force the use of the classic 771 | * node migrations. 772 | */ 773 | $settings['migrate_node_migrate_type_classic'] = FALSE; 774 | 775 | /** 776 | * The default settings for migration sources. 777 | * 778 | * These settings are used as the default settings on the Credential form at 779 | * /upgrade/credentials. 780 | * 781 | * - migrate_source_version - The version of the source database. This can be 782 | * '6' or '7'. Defaults to '7'. 783 | * - migrate_source_connection - The key in the $databases array for the source 784 | * site. 785 | * - migrate_file_public_path - The location of the source Drupal 6 or Drupal 7 786 | * public files. This can be a local file directory containing the source 787 | * Drupal 6 or Drupal 7 site (e.g /var/www/docroot), or the site address 788 | * (e.g http://example.com). 789 | * - migrate_file_private_path - The location of the source Drupal 7 private 790 | * files. This can be a local file directory containing the source Drupal 7 791 | * site (e.g /var/www/docroot), or empty to use the same value as Public 792 | * files directory. 793 | * 794 | * Sample configuration for a drupal 6 source site with the source files in a 795 | * local directory. 796 | * 797 | * @code 798 | * $settings['migrate_source_version'] = '6'; 799 | * $settings['migrate_source_connection'] = 'migrate'; 800 | * $settings['migrate_file_public_path'] = '/var/www/drupal6'; 801 | * @endcode 802 | * 803 | * Sample configuration for a drupal 7 source site with public source files on 804 | * the source site and the private files in a local directory. 805 | * 806 | * @code 807 | * $settings['migrate_source_version'] = '7'; 808 | * $settings['migrate_source_connection'] = 'migrate'; 809 | * $settings['migrate_file_public_path'] = 'https://drupal7.com'; 810 | * $settings['migrate_file_private_path'] = '/var/www/drupal7'; 811 | * @endcode 812 | */ 813 | # $settings['migrate_source_connection'] = ''; 814 | # $settings['migrate_source_version'] = ''; 815 | # $settings['migrate_file_public_path'] = ''; 816 | # $settings['migrate_file_private_path'] = ''; 817 | 818 | /** 819 | * Load local development override configuration, if available. 820 | * 821 | * Create a settings.local.php file to override variables on secondary (staging, 822 | * development, etc.) installations of this site. 823 | * 824 | * Typical uses of settings.local.php include: 825 | * - Disabling caching. 826 | * - Disabling JavaScript/CSS compression. 827 | * - Rerouting outgoing emails. 828 | * 829 | * Keep this code block at the end of this file to take full effect. 830 | */ 831 | # 832 | # if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { 833 | # include $app_root . '/' . $site_path . '/settings.local.php'; 834 | # } 835 | -------------------------------------------------------------------------------- /web/sites/default/services.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | session.storage.options: 3 | # Default ini options for sessions. 4 | # 5 | # Some distributions of Linux (most notably Debian) ship their PHP 6 | # installations with garbage collection (gc) disabled. Since Drupal depends 7 | # on PHP's garbage collection for clearing sessions, ensure that garbage 8 | # collection occurs by using the most common settings. 9 | # @default 1 10 | gc_probability: 1 11 | # @default 100 12 | gc_divisor: 100 13 | # 14 | # Set session lifetime (in seconds), i.e. the grace period for session 15 | # data. Sessions are deleted by the session garbage collector after one 16 | # session lifetime has elapsed since the user's last visit. When a session 17 | # is deleted, authenticated users are logged out, and the contents of the 18 | # user's session is discarded. 19 | # @default 200000 20 | gc_maxlifetime: 200000 21 | # 22 | # Set session cookie lifetime (in seconds), i.e. the time from the session 23 | # is created to the cookie expires, i.e. when the browser is expected to 24 | # discard the cookie. The value 0 means "until the browser is closed". 25 | # @default 2000000 26 | cookie_lifetime: 2000000 27 | # 28 | # Drupal automatically generates a unique session cookie name based on the 29 | # full domain name used to access the site. This mechanism is sufficient 30 | # for most use-cases, including multi-site deployments. However, if it is 31 | # desired that a session can be reused across different subdomains, the 32 | # cookie domain needs to be set to the shared base domain. Doing so assures 33 | # that users remain logged in as they cross between various subdomains. 34 | # To maximize compatibility and normalize the behavior across user agents, 35 | # the cookie domain should start with a dot. 36 | # 37 | # @default none 38 | # cookie_domain: '.example.com' 39 | # 40 | # Set the session ID string length. The length can be between 22 to 256. The 41 | # PHP recommended value is 48. See 42 | # https://www.php.net/manual/session.security.ini.php for more information. 43 | # This value should be kept in sync with 44 | # \Drupal\Core\Session\SessionConfiguration::__construct() 45 | # @default 48 46 | sid_length: 48 47 | # 48 | # Set the number of bits in encoded session ID character. The possible 49 | # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", 50 | # ","). The PHP recommended value is 6. See 51 | # https://www.php.net/manual/session.security.ini.php for more information. 52 | # This value should be kept in sync with 53 | # \Drupal\Core\Session\SessionConfiguration::__construct() 54 | # @default 6 55 | sid_bits_per_character: 6 56 | twig.config: 57 | # Twig debugging: 58 | # 59 | # When debugging is enabled: 60 | # - The markup of each Twig template is surrounded by HTML comments that 61 | # contain theming information, such as template file name suggestions. 62 | # - Note that this debugging markup will cause automated tests that directly 63 | # check rendered HTML to fail. When running automated tests, 'debug' 64 | # should be set to FALSE. 65 | # - The dump() function can be used in Twig templates to output information 66 | # about template variables. 67 | # - Twig templates are automatically recompiled whenever the source code 68 | # changes (see auto_reload below). 69 | # 70 | # For more information about debugging Twig templates, see 71 | # https://www.drupal.org/node/1906392. 72 | # 73 | # Enabling Twig debugging is not recommended in production environments. 74 | # @default false 75 | debug: true 76 | # Twig auto-reload: 77 | # 78 | # Automatically recompile Twig templates whenever the source code changes. 79 | # If you don't provide a value for auto_reload, it will be determined 80 | # based on the value of debug. 81 | # 82 | # Enabling auto-reload is not recommended in production environments. 83 | # @default null 84 | auto_reload: null 85 | # Twig cache: 86 | # 87 | # By default, Twig templates will be compiled and stored in the filesystem 88 | # to increase performance. Disabling the Twig cache will recompile the 89 | # templates from source each time they are used. In most cases the 90 | # auto_reload setting above should be enabled rather than disabling the 91 | # Twig cache. 92 | # 93 | # Disabling the Twig cache is not recommended in production environments. 94 | # @default true 95 | cache: true 96 | # File extensions: 97 | # 98 | # List of file extensions the Twig system is allowed to load via the 99 | # twig.loader.filesystem service. Files with other extensions will not be 100 | # loaded unless they are added here. For example, to allow a file named 101 | # 'example.partial' to be loaded, add 'partial' to this list. To load files 102 | # with no extension, add an empty string '' to the list. 103 | # 104 | # @default ['css', 'html', 'js', 'svg', 'twig'] 105 | allowed_file_extensions: 106 | - css 107 | - html 108 | - js 109 | - svg 110 | - twig 111 | renderer.config: 112 | # Renderer required cache contexts: 113 | # 114 | # The Renderer will automatically associate these cache contexts with every 115 | # render array, hence varying every render array by these cache contexts. 116 | # 117 | # @default ['languages:language_interface', 'theme', 'user.permissions'] 118 | required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] 119 | # Renderer automatic placeholdering conditions: 120 | # 121 | # Drupal allows portions of the page to be automatically deferred when 122 | # rendering to improve cache performance. That is especially helpful for 123 | # cache contexts that vary widely, such as the active user. On some sites 124 | # those may be different, however, such as sites with only a handful of 125 | # users. If you know what the high-cardinality cache contexts are for your 126 | # site, specify those here. If you're not sure, the defaults are fairly safe 127 | # in general. 128 | # 129 | # For more information about rendering optimizations see 130 | # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing 131 | auto_placeholder_conditions: 132 | # Max-age at or below which caching is not considered worthwhile. 133 | # 134 | # Disable by setting to -1. 135 | # 136 | # @default 0 137 | max-age: 0 138 | # Cache contexts with a high cardinality. 139 | # 140 | # Disable by setting to []. 141 | # 142 | # @default ['session', 'user'] 143 | contexts: ['session', 'user'] 144 | # Tags with a high invalidation frequency. 145 | # 146 | # Disable by setting to []. 147 | # 148 | # @default [] 149 | tags: [] 150 | # Cacheability debugging: 151 | # 152 | # Responses with cacheability metadata (CacheableResponseInterface instances) 153 | # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age 154 | # headers. 155 | # 156 | # For more information about debugging cacheable responses, see 157 | # https://www.drupal.org/developing/api/8/response/cacheable-response-interface 158 | # 159 | # Enabling cacheability debugging is not recommended in production 160 | # environments. 161 | # @default false 162 | http.response.debug_cacheability_headers: false 163 | factory.keyvalue: {} 164 | # Default key/value storage service to use. 165 | # @default keyvalue.database 166 | # default: keyvalue.database 167 | # Collection-specific overrides. 168 | # state: keyvalue.database 169 | factory.keyvalue.expirable: {} 170 | # Default key/value expirable storage service to use. 171 | # @default keyvalue.database.expirable 172 | # default: keyvalue.database.expirable 173 | # Allowed protocols for URL generation. 174 | filter_protocols: 175 | - http 176 | - https 177 | - ftp 178 | - news 179 | - nntp 180 | - tel 181 | - telnet 182 | - mailto 183 | - irc 184 | - ssh 185 | - sftp 186 | - webcal 187 | - rtsp 188 | 189 | # Configure Cross-Site HTTP requests (CORS). 190 | # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 191 | # for more information about the topic in general. 192 | # Note: By default the configuration is disabled. 193 | cors.config: 194 | enabled: false 195 | # Specify allowed headers, like 'x-allowed-header'. 196 | allowedHeaders: [] 197 | # Specify allowed request methods, specify ['*'] to allow all possible ones. 198 | allowedMethods: [] 199 | # Configure requests allowed from specific origins. 200 | allowedOrigins: ['*'] 201 | # Sets the Access-Control-Expose-Headers header. 202 | exposedHeaders: false 203 | # Sets the Access-Control-Max-Age header. 204 | maxAge: false 205 | # Sets the Access-Control-Allow-Credentials header. 206 | supportsCredentials: false 207 | -------------------------------------------------------------------------------- /web/sites/default/settings.php: -------------------------------------------------------------------------------- 1 | ..' => 'directory'. As an 26 | * example, to map https://www.drupal.org:8080/mysite/test to the configuration 27 | * directory sites/example.com, the array should be defined as: 28 | * @code 29 | * $sites = [ 30 | * '8080.www.drupal.org.mysite.test' => 'example.com', 31 | * ]; 32 | * @endcode 33 | * The URL, https://www.drupal.org:8080/mysite/test/, could be a symbolic link 34 | * or an Apache Alias directive that points to the Drupal root containing 35 | * index.php. An alias could also be created for a subdomain. See the 36 | * @link https://www.drupal.org/documentation/install online Drupal installation guide @endlink 37 | * for more information on setting up domains, subdomains, and subdirectories. 38 | * 39 | * The following examples look for a site configuration in sites/example.com: 40 | * @code 41 | * URL: http://dev.drupal.org 42 | * $sites['dev.drupal.org'] = 'example.com'; 43 | * 44 | * URL: http://localhost/example 45 | * $sites['localhost.example'] = 'example.com'; 46 | * 47 | * URL: http://localhost:8080/example 48 | * $sites['8080.localhost.example'] = 'example.com'; 49 | * 50 | * URL: https://www.drupal.org:8080/mysite/test/ 51 | * $sites['8080.www.drupal.org.mysite.test'] = 'example.com'; 52 | * @endcode 53 | * 54 | * @see default.settings.php 55 | * @see \Drupal\Core\DrupalKernel::getSitePath() 56 | * @see https://www.drupal.org/documentation/install/multi-site 57 | */ 58 | -------------------------------------------------------------------------------- /web/update.php: -------------------------------------------------------------------------------- 1 | handle($request); 28 | $response->send(); 29 | 30 | $kernel->terminate($request, $response); 31 | -------------------------------------------------------------------------------- /web/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 48 | 49 | 52 | 61 | 62 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | --------------------------------------------------------------------------------