Dotenv example

return $this->projectDirectory.\DIRECTORY_SEPARATOR.$file;
    }

    private function loadValues(string $file): array
    {
        $filePath = $this->getFilePath($file);

        if (str_ends_with($filePath, '.php')) {
            return include $filePath;
        }

        return (new Dotenv())->parse(file_get_contents($filePath));
    }
}
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\Dotenv\Exception\FormatException;
use Symfony\Component\Dotenv\Exception\PathException;

class DotenvTest extends TestCase
{
    /** * @dataProvider getEnvDataWithFormatErrors */
    public function testParseWithFormatError($data$error)
    {
        $dotenv = new Dotenv();

        try {
            $dotenv->parse($data);
            $this->fail('Should throw a FormatException');
        } catch (FormatException $e) {
            $this->assertStringMatchesFormat($error$e->getMessage());
        }
    }

    public static function getEnvDataWithFormatErrors()
    {
        
EOF;
        file_put_contents($dotenvPath.'.local.php', $vars, \LOCK_EX);

        $output->writeln(sprintf('Successfully dumped .env files in <info>.env.local.php</> for the <info>%s</> environment.', $env));

        return 0;
    }

    private function loadEnv(string $dotenvPath, string $env, array $config): array
    {
        $dotenv = new Dotenv();
        $envKey = $config['env_var_name'] ?? 'APP_ENV';
        $testEnvs = $config['test_envs'] ?? ['test'];

        $globalsBackup = [$_SERVER$_ENV];
        unset($_SERVER[$envKey]);
        $_ENV = [$envKey => $env];
        $_SERVER['SYMFONY_DOTENV_VARS'] = implode(',', array_keys($_SERVER));

        try {
            $dotenv->loadEnv($dotenvPath, null, 'dev', $testEnvs);
            unset($_ENV['SYMFONY_DOTENV_VARS']);

            


    /** * @runInSeparateProcess */
    public function testCompletion()
    {
        $env = 'prod';
        $projectDirectory = __DIR__.'/Fixtures/Scenario2';

        $_SERVER['TEST_ENV_KEY'] = $env;
        (new Dotenv('TEST_ENV_KEY'))->bootEnv($projectDirectory.'/.env');

        $command = new DebugCommand($env$projectDirectory);
        $application = new Application();
        $application->add($command);
        $tester = new CommandCompletionTester($application->get('debug:dotenv'));
        $this->assertSame(['FOO', 'TEST']$tester->complete(['']));
    }

    private function executeCommand(string $projectDirectory, string $env, array $input = []): string
    {
        $_SERVER['TEST_ENV_KEY'] = $env;
        (


    public function testEncryptAndDecrypt()
    {
        $vault = new DotenvVault($this->envFile);

        $plain = "plain\ntext";

        $vault->seal('foo', $plain);

        unset($_SERVER['foo']$_ENV['foo']);
        (new Dotenv())->load($this->envFile);

        $decrypted = $vault->reveal('foo');
        $this->assertSame($plain$decrypted);

        $this->assertSame(['foo' => null]array_intersect_key($vault->list()['foo' => 123]));
        $this->assertSame(['foo' => $plain]array_intersect_key($vault->list(true)['foo' => 123]));

        $this->assertTrue($vault->remove('foo'));
        $this->assertFalse($vault->remove('foo'));

        unset($_SERVER['foo']$_ENV['foo']);
        (
$envKey = $options['env_var_name'] ??= 'APP_ENV';
        $debugKey = $options['debug_var_name'] ??= 'APP_DEBUG';

        if (isset($options['env'])) {
            $_SERVER[$envKey] = $options['env'];
        } elseif (isset($_SERVER['argv']) && class_exists(ArgvInput::class)) {
            $this->options = $options;
            $this->getInput();
        }

        if (!($options['disable_dotenv'] ?? false) && isset($options['project_dir']) && !class_exists(MissingDotenv::class, false)) {
            (new Dotenv($envKey$debugKey))
                ->setProdEnvs((array) ($options['prod_envs'] ?? ['prod']))
                ->usePutenv($options['use_putenv'] ?? false)
                ->bootEnv($options['project_dir'].'/'.($options['dotenv_path'] ?? '.env'), 'dev', (array) ($options['test_envs'] ?? ['test'])$options['dotenv_overload'] ?? false);

            if (isset($this->input) && ($options['dotenv_overload'] ?? false)) {
                if ($this->input->getParameterOption(['--env', '-e']$_SERVER[$envKey], true) !== $_SERVER[$envKey]) {
                    throw new \LogicException(sprintf('Cannot use "--env" or "-e" when the "%s" file defines "%s" and the "dotenv_overload" runtime option is true.', $options['dotenv_path'] ?? '.env', $envKey));
                }

                if ($_SERVER[$debugKey] && $this->input->hasParameterOption('--no-debug', true)) {
                    putenv($debugKey.'='.$_SERVER[$debugKey] = $_ENV[$debugKey] = '0');
                }
Home | Imprint | This part of the site doesn't use cookies.