<?php namespace Illuminate\Foundation\Bootstrap; use Dotenv\Dotenv; use Dotenv\Exception\InvalidPathException; use Symfony\Component\Console\Input\ArgvInput; use Illuminate\Contracts\Foundation\Application; class DetectEnvironment { /** * Bootstrap the given application. * * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public function bootstrap(Application $app) { if (! $app->configurationIsCached()) { $this->checkForSpecificEnvironmentFile($app); try { (new Dotenv($app->environmentPath(), $app->environmentFile()))->load(); } catch (InvalidPathException $e) { // } } } /** * Detect if a custom environment file matching the APP_ENV exists. * * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ protected function checkForSpecificEnvironmentFile($app) { if (php_sapi_name() == 'cli') { $input = new ArgvInput; if ($input->hasParameterOption('--env')) { $file = $app->environmentFile().'.'.$input->getParameterOption('--env'); $this->loadEnvironmentFile($app, $file); } } if (! env('APP_ENV')) { return; } if (empty($file)) { $file = $app->environmentFile().'.'.env('APP_ENV'); $this->loadEnvironmentFile($app, $file); } } /** * Load a custom environment file. * * @param \Illuminate\Contracts\Foundation\Application $app * @param string $file * @return void */ protected function loadEnvironmentFile($app, $file) { if (file_exists($app->environmentPath().'/'.$file)) { $app->loadEnvironmentFrom($file); } } }