Skip to content

Instantly share code, notes, and snippets.

@matgargano
Last active May 18, 2019 21:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matgargano/9813288f59d803ec57d5a767dd50419c to your computer and use it in GitHub Desktop.
Save matgargano/9813288f59d803ec57d5a767dd50419c to your computer and use it in GitHub Desktop.
<?php
/**
* Your base production configuration goes in this file. Environment-specific
* overrides go in their respective config/environments/{{WP_ENV}}.php file.
*
* A good default policy is to deviate from the production config as little as
* possible. Try to define as much of your configuration in this file as you
* can.
*/
use Roots\WPConfig\Config;
/** @var string Directory containing all of the site's files */
$root_dir = dirname( __DIR__ );
/** @var string Document Root */
$webroot_dir = $root_dir . '/web';
/**
* Expose global env() function from oscarotero/env
*/
Env::init();
/**
* Use Dotenv to set required environment variables and load .env file in root
*/
$dotenv = Dotenv\Dotenv::create( $root_dir );
if ( file_exists( $root_dir . '/.env' ) ) {
$dotenv->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' );
/**
* 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
*/
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', substr( $dsn->path, 1 ) );
Config::define( 'DB_USER', $dsn->user );
Config::define( 'DB_PASSWORD', isset( $dsn->pass ) ? $dsn->pass : null );
Config::define( 'DB_HOST', isset( $dsn->port ) ? "{$dsn->host}:{$dsn->port}" : $dsn->host );
}
if ( array_key_exists( 'HTTP_HOST', $_SERVER ) ) {
Config::define( 'COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );
}
Config::define('WP_ALLOW_MULTISITE', true);
Config::define('MULTISITE', true);
Config::define('SUBDOMAIN_INSTALL', true); // Set to true if using subdomains
Config::define('DOMAIN_CURRENT_SITE', env('DOMAIN_CURRENT_SITE'));
Config::define('PATH_CURRENT_SITE', env('PATH_CURRENT_SITE') ?: '/');
Config::define('SITE_ID_CURRENT_SITE', env('SITE_ID_CURRENT_SITE') ?: 1);
Config::define('BLOG_ID_CURRENT_SITE', env('BLOG_ID_CURRENT_SITE') ?: 1);
/**
* 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 );
/**
* Debugging Settings
*/
Config::define( 'WP_DEBUG_DISPLAY', false );
Config::define( 'SCRIPT_DEBUG', false );
ini_set( 'display_errors', 0 );
/**
* 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'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
$env_config = __DIR__ . '/environments/' . WP_ENV . '.php';
if ( file_exists( $env_config ) ) {
require_once $env_config;
}
Config::apply();
/**
* Bootstrap WordPress
*/
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', $webroot_dir . '/wp/' );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment