Variable SETTINGS_OVERRIDE_PHPConst
SETTINGS_OVERRIDE_PHP: "// --- appended by src/site-do.js: run against ctx.storage.sql ---\n$databases['default']['default'] = [\n\t'driver' => 'cfw_do_sqlite',\n\t'namespace' => 'Drupal\\\\cfw_do_sqlite\\\\Driver\\\\Database\\\\cfw_do_sqlite',\n\t'autoload' => 'modules/custom/cfw_do_sqlite/src/Driver/Database/cfw_do_sqlite/',\n\t'prefix' => '',\n\t// this object's slice of the rowid space. A forwarding lane predicts an id, tells the visitor\n\t// about it, and then hands the statement to a primary that would append its own -- so the driver\n\t// mints from a residue class no other lane can reach and names the id in the INSERT. Both are 0\n\t// on the primary and wherever forwarding is off, which is the arithmetic that was always there\n\t'lane' => __CFW_LANE__,\n\t'lanes' => __CFW_LANES__,\n];\n$class_loader->addPsr4(\n\t'Drupal\\\\sqlite\\\\Driver\\\\Database\\\\sqlite\\\\',\n\t$app_root . '/core/modules/sqlite/src/Driver/Database/sqlite/',\n);\n// PDO, PDOException and PDOStatement in userland, for a build with no ext-pdo. Global classes,\n// so no PSR-4 root can reach them and the require is the only mechanism; it has to run before\n// the first statement is constructed, and Settings::initialize() is the earliest place that does\nrequire_once $app_root . '/modules/custom/cfw_do_sqlite/src/pdo-shim.php';\n// the namespace is registered here rather than by the module system: the PSR-4 root has to exist\n// before Settings::initialize() returns, and the extension list is not read until after\n$class_loader->addPsr4('Drupal\\\\drupflare\\\\', $app_root . '/modules/custom/drupflare/src/');\n// The mailer is claimed by the module, not forced here. This block used to assign\n// system.mail:interface.default = cfw_mail unconditionally, on the reasoning that php_mail cannot\n// run in this runtime and a config import must not revert a site into a mailer that drops\n// everything. Both halves are true and the assignment was still a 500 on every site: cfw_mail is a\n// plugin of the drupflare module, an assignment cannot know whether its provider is installed,\n// and MailManager throws PluginNotFoundException for an interface it cannot resolve -- so\n// /user/password answered 500 rather than failing to send. Measured on a provisioned site.\n// (The shipped core.extension DOES list drupflare today; it did not when this was found, and the\n// override is still the right shape because a site can uninstall the module.)\n//\n// drupflare_install() sets it instead, which cannot run before the plugin exists, and\n// Drupal\\drupflare\\Hook\\Requirements reports an interface that is not cfw_mail.\n// drupflare/stream-http, which drupflare's HttpsStreamWrapper now EXTENDS. Composer never runs\n// on the edge, so the packed tree is the vendor directory and this line is the autoloader entry\n// composer would otherwise have written. Without it the subclass fatals on its parent.\n$class_loader->addPsr4(\n\t'Drupflare\\\\StreamHttp\\\\',\n\t$app_root . '/libraries/drupflare-stream-http/src/',\n);\n// A forged host cannot move the site, so the pattern list is the origin the object already pinned\n// rather than a wildcard. cfw_serve() builds every request from that same origin, so anything else\n// is a request this site did not issue to itself. Empty until the origin is known, which is the one\n// state where the check has nothing to compare against.\n$cfw_host = (string) parse_url(__CFW_SITE_ORIGIN__, PHP_URL_HOST);\nif ($cfw_host !== '') {\n\t$settings['trusted_host_patterns'] = ['^' . str_replace('.', '\\\\.', $cfw_host) . '$'];\n}\n// Drupal derives this from the hash salt and then reports that it does not exist. Nothing in this\n// runtime creates it, and config import/export is the one feature that reads it.\n$settings['config_sync_directory'] = $app_root . '/sites/default/files/config/sync';\n// created HERE, not once at claim time: the filesystem is remounted from the pack on every boot,\n// so a directory made during provisioning is gone by the next request\nif (!is_dir($settings['config_sync_directory'])) {\n\t@mkdir($settings['config_sync_directory'], 0777, true);\n}\n// FALSE is what core asks for: SystemRequirementsHooks warns on TRUE *and* on NULL, and both\n// messages say to set FALSE. It is the Drupal 12 default and the Drupal 13 behaviour, and it only\n// adds a novalidate attribute to forms -- server-side validation is untouched\n$settings['enable_html5_validation'] = false;\n// whether the password service hashes with argon2id on the host. OFF unless the operator says\n// so -- turning it on rehashes every password at its owner's next login, and on the free plan a\n// 19 MiB two-pass hash is CPU a login invocation does not have\n$settings['drupflare.argon2'] = __CFW_ARGON2__;\n// Cache bins the interpreter keeps in memory instead of in this tenant's SQLite, from\n// MEMORY_CACHE_BINS. Default dynamic_page_cache and menu (DEFAULT_MEMORY_CACHE_BINS in\n// src/do/levers.ts); MEMORY_CACHE_BINS=none turns them off. Measured on /user/login with both bins\n// empty: 1 row in memory against 8 in SQL (realRender class). The memory bins cost a rebuild after\n// every interpreter drop, which is a property of a site's own traffic. An earlier figure of 9 rows\n// per tag-invalidated re-render has no path or date recorded, so it is not used here\n// NOT $settings['cache']['bins'], which names a SERVICE. A service is resolved out of the compiled\n// container, the pack ships that container prebuilt, and its cache key does not move when the\n// driver pack does -- so the settings route names something the container has never heard of and\n// the boot throws. Measured on a fresh site: the arm with a bin selected rendered nothing at all,\n// 0 rows and 0 bytes, against 8 rows on the control. CfwCacheBackendFactory reads this instead, and\n// its body is remounted from the pack on every boot\n$settings['drupflare']['memory_cache_bins'] = __CFW_MEMORY_BINS__;\n$settings['drupflare']['memory_cache_max_items'] = __CFW_MEMORY_ITEMS__;\n// libraries delivered after the pack, registered the way composer would have; see autoloadPhp()\n// __CFW_PACKAGE_AUTOLOAD__\n// DRUPAL_ENV_* and DRUPAL_CONFIG from the deployment; see src/ops/deployment-env.ts\n// __CFW_DEPLOYMENT_ENV__\n"