Env encryption and decryption library.
Prevent committing and exposing vulnerable plain-text environment variables in production environments.
You can view a more in-depth tutorial on Medium.
Install secure-env-php using Composer
composer require johnathanmiller/secure-env-php
Create an .env
file in your project with environment variables.
DB_HOST=localhost
DB_USER=username
DB_PASS=password
Execute vendor/bin/encrypt-env
in your project directory and follow the command prompts to encrypt your .env
file. You can press enter to accept the default values in the square brackets.
- Path to your .env file you want to encrypt.
- Input "y" or "yes" to generate a new secret key file. Otherwise input path to secret key file when prompted.
- Your choice of encryption algorith or accept the default provided. For a list of supported algorithms visit: https://secure.php.net/manual/en/function.openssl-get-cipher-methods.php.
- Path to save the encrypted environment file.
After you've successfully completed the prompts you should now have an encrypted environment file.
Import into namespace environment
use SecureEnvPHP\SecureEnvPHP;
Instantiate class with your decryption arguments. First argument is path to your encrypted env file, second argument is path to your secret key file, and optionally a third argument can be set for your choice of encryption algorithm, (this needs to match the algorithm you used to encrypt your env file).
(new SecureEnvPHP())->parse('.env.enc', '.env.key');
parameter | description | default |
---|---|---|
1. path | Path to encrypted file | .env.enc |
2. secret | Path to key file or secret string | |
3. algo | Encryption algorithm | aes256 |
After instantiating the SecureEnvPHP class you can retrieve your values in your project by calling getenv
with your variable names, such as getenv('DB_HOST')
.
<?php
require_once './vendor/autoload.php';
use SecureEnvPHP\SecureEnvPHP;
(new SecureEnvPHP())->parse('.env.enc', '.env.key');
$host = getenv('DB_HOST');
Secure Env PHP is inspired by https://github.com/kunalpanchal/secure-env for NodeJS.