pvsv1984 / secure-env-php
Encrypt environment files for production use.
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7.5
README
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.
Installation
Install secure-env-php using Composer
composer require pvsv1984/secure-env-php
.env
Create an .env
file in your project with environment variables.
DB_HOST=localhost DB_USER=username DB_PASS=password
Encrypting
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.
Encryption Prompts
- 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 and Instantiate
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');
Decryption Options
Retrieving Env Values
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')
.
Full Example
<?php require_once './vendor/autoload.php'; use SecureEnvPHP\SecureEnvPHP; (new SecureEnvPHP())->parse('.env.enc', '.env.key'); $host = getenv('DB_HOST');
Acknowledgements
Secure Env PHP is inspired by https://github.com/kunalpanchal/secure-env for NodeJS.