load(); $dotenv->required(['WP_HOME', 'WP_SITEURL']); if (!env('DATABASE_URL')) { $dotenv->required(['DB_NAME', 'DB_USER', 'DB_PASSWORD']); } } /* * Set up our global environment constant and load its config first * Default: production */ \define('WP_ENV', env('WP_ENV') ?: 'production'); // Infer WP_ENVIRONMENT_TYPE based on WP_ENV if (!env('WP_ENVIRONMENT_TYPE') && \in_array(WP_ENV, ['production', 'staging', 'development', 'local'], true)) { Config::define('WP_ENVIRONMENT_TYPE', WP_ENV); } // URLs Config::define('WP_HOME', env('WP_HOME')); Config::define('WP_SITEURL', env('WP_SITEURL')); // Custom Content Directory Config::define('CONTENT_DIR', '/app'); Config::define('WP_CONTENT_DIR', $webroot_dir . Config::get('CONTENT_DIR')); Config::define('WP_CONTENT_URL', Config::get('WP_HOME') . Config::get('CONTENT_DIR')); // DB settings if (env('DB_SSL')) { Config::define('MYSQL_CLIENT_FLAGS', \MYSQLI_CLIENT_SSL); } Config::define('DB_NAME', env('DB_NAME')); Config::define('DB_USER', env('DB_USER')); Config::define('DB_PASSWORD', env('DB_PASSWORD')); Config::define('DB_HOST', env('DB_HOST') ?: 'localhost'); Config::define('DB_CHARSET', 'utf8mb4'); Config::define('DB_COLLATE', ''); $table_prefix = env('DB_PREFIX') ?: 'wp_'; if (env('DATABASE_URL')) { $dsn = (object) parse_url(env('DATABASE_URL')); Config::define('DB_NAME', mb_substr($dsn->path, 1)); Config::define('DB_USER', $dsn->user); Config::define('DB_PASSWORD', $dsn->pass ?? null); Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host); } // Authentication Unique Keys and Salts Config::define('AUTH_KEY', env('AUTH_KEY')); Config::define('SECURE_AUTH_KEY', env('SECURE_AUTH_KEY')); Config::define('LOGGED_IN_KEY', env('LOGGED_IN_KEY')); Config::define('NONCE_KEY', env('NONCE_KEY')); Config::define('AUTH_SALT', env('AUTH_SALT')); Config::define('SECURE_AUTH_SALT', env('SECURE_AUTH_SALT')); Config::define('LOGGED_IN_SALT', env('LOGGED_IN_SALT')); Config::define('NONCE_SALT', env('NONCE_SALT')); // Custom Settings Config::define('AUTOMATIC_UPDATER_DISABLED', true); Config::define('DISABLE_WP_CRON', env('DISABLE_WP_CRON') ?: false); // Disable the plugin and theme file editor in the admin Config::define('DISALLOW_FILE_EDIT', true); // Disable plugin and theme updates and installation from the admin Config::define('DISALLOW_FILE_MODS', true); // Limit the number of post revisions Config::define('WP_POST_REVISIONS', env('WP_POST_REVISIONS') ?? true); // Debugging Settings Config::define('WP_DEBUG_DISPLAY', false); Config::define('WP_DEBUG_LOG', false); Config::define('SCRIPT_DEBUG', false); ini_set('display_errors', '0'); // Plugins Config::define('WPMU_PLUGIN_DIR', Config::get('WP_CONTENT_DIR') . '/mu-plugins'); Config::define('WP_PLUGIN_DIR', Config::get('WP_CONTENT_DIR') . '/plugins'); /* * Allow WordPress to detect HTTPS when used behind a reverse proxy or a load balancer * See https://codex.wordpress.org/Function_Reference/is_ssl#Notes */ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO']) { $_SERVER['HTTPS'] = 'on'; } $env_config = __DIR__ . '/environments/' . WP_ENV . '.php'; if (file_exists($env_config)) { include_once $env_config; } Config::apply(); // Bootstrap WordPress if (!\defined('ABSPATH')) { \define('ABSPATH', $webroot_dir . '/wp/'); }