/** * Reloads env settings and also updates the configurations * in Laravel for anything that might change during the install * process. Things like app.key, app.debug, database stuff, mail * stuff, cache and session settings... this is a hack for people * who use php artisan serve ... no one else really needs this * hackery... * * @return void */ public function refreshEnvironment(array $settings = array()) { $this->EnvironmentFileManager->createIfNotExists(); \Dotenv::makeMutable(); \Dotenv::load(base_path(), '.env'); \Dotenv::makeImmutable(); $configToEnvMapping = ['app.debug' => 'APP_DEBUG', 'app.key' => 'APP_KEY', 'cache.default' => 'CACHE_DRIVER', 'database.default' => 'DB_DEFAULT', 'database.connections.mysql.host' => 'DB_HOST', 'database.connections.pgsql.host' => 'DB_HOST', 'database.connections.sqlsrv.host' => 'DB_HOST', 'database.connections.mysql.database' => 'DB_DATABASE', 'database.connections.pgsql.database' => 'DB_DATABASE', 'database.connections.sqlsrv.database' => 'DB_DATABASE', 'database.connections.mysql.username' => 'DB_USERNAME', 'database.connections.pgsql.username' => 'DB_USERNAME', 'database.connections.sqlsrv.username' => 'DB_USERNAME', 'database.connections.mysql.password' => 'DB_PASSWORD', 'database.connections.pgsql.password' => 'DB_PASSWORD', 'database.connections.sqlsrv.password' => 'DB_PASSWORD', 'session.driver' => 'SESSION_DRIVER']; $merged = array_merge(['APP_NAME' => env('APP_NAME', 'App'), 'APP_ENV' => env('APP_ENV', 'local'), 'APP_DEBUG' => env('APP_DEBUG'), 'APP_KEY' => env('APP_KEY', 'SomeRandomString'), 'CACHE_DRIVER' => env('CACHE_DRIVER', 'file'), 'DB_DEFAULT' => env('DB_DEFAULT', 'mysql'), 'DB_HOST' => env('DB_HOST', 'localhost'), 'DB_DATABASE' => env('DB_DATABASE', 'forge'), 'DB_USERNAME' => env('DB_USERNAME', 'forge'), 'DB_PASSWORD' => env('DB_PASSWORD', ''), 'CONFIGS_OVERRIDE' => env('CONFIGS_OVERRIDE', ''), 'APP_MIGRATIONS' => env('APP_MIGRATIONS', ''), 'APP_SEEDS' => env('APP_SEEDS', ''), 'SESSION_DRIVER' => env('SESSION_DRIVER', 'file')], $settings); foreach ($configToEnvMapping as $config => $env) { $this->Config->set($config, $merged[$env]); } app()['env'] = $merged['APP_ENV']; }
##### Use a separate .env file instead that overwrites the defaults. ##### ##### Read more at ##### ##### https://seravo.com/docs/development/configure-vagrant-box/#using-dotenv ##### ###################################################################################### #Load composer libraries require_once dirname(__DIR__) . '/vendor/autoload.php'; $root_dir = dirname(__DIR__); $webroot_dir = $root_dir . '/htdocs'; /** * Use Dotenv to set required environment variables and load .env file in root * Seravo provides all needed envs for WordPress by default. * If you want to have more envs put them into .env file * .env file is also heavily used in development */ if (file_exists($root_dir . '/.env')) { Dotenv::makeMutable(); Dotenv::load($root_dir); } /** * DB settings * You can find the credentials by running $ wp-list-env */ define('DB_NAME', getenv('DB_NAME')); define('DB_USER', getenv('DB_USER')); define('DB_PASSWORD', getenv('DB_PASSWORD')); define('DB_PORT', getenv('DB_PORT') ? getenv('DB_PORT') : 3306); define('DB_HOST', getenv('DB_HOST') ? getenv('DB_HOST') . ':' . DB_PORT : '127.0.0.1:3306'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); $table_prefix = getenv('DB_PREFIX') ? getenv('DB_PREFIX') : 'wp_'; /**
public function testDotenvDoesNotOverwriteEnvWhenMutable() { Dotenv::makeMutable(); Dotenv::setEnvironmentVariable('QFOO=external'); Dotenv::load(dirname(__DIR__) . '/fixtures', 'quoted.env'); $this->assertEquals('bar', getenv('QFOO')); }