Loads environment variables from .env
to getenv()
, $_ENV
and $_SERVER
automatically.
Installation is super-easy via Composer
composer require envs/dotenv
or add it by hand to your composer.json
file.
use Dotenv\Dotenv;
require 'vendor/autoload.php';
If already .env file existing on current directory
$dotenv = Dotenv::process(__DIR__);
$dotenv->load();
If already .env file existing on current directory without throwing error
$dotenv = Dotenv::process(__DIR__);
$dotenv->safeLoad();
If already .env file existing on current directory
$dotenv = Dotenv::process(__DIR__, 'myconfig.env');
$dotenv->load();
Loads multiple .env
files.
$dotenv = Dotenv::process(__DIR__, ['.env.local', '.env.example', '.env'], false);
$dotenv->load();
All of the defined variables are now available in the $_ENV
and $_SERVER
super-globals.
$s3_bucket = $_ENV['S3_BUCKET'];
$s3_bucket = $_SERVER['S3_BUCKET'];
It's possible to nest an environment variable within another, useful to cut down on repetition.
This is done by wrapping an existing environment variable in ${…}
e.g.
BASE_DIR="/var/webroot/project-root"
CACHE_DIR="${BASE_DIR}/cache"
TMP_DIR="${BASE_DIR}/tmp"
PHP dotenv has built in validation functionality, including for enforcing the presence of an environment variable. This is particularly useful to let people know any explicit required variables that your app will not work without.
You can use a single string:
$dotenv->required('DATABASE_DSN');
Or an array of strings:
$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']);
If you discover a security vulnerability within this package, please send an email to [email protected] All security vulnerabilities will be promptly addressed. You may view our full security policy here.
PHP dotenv is licensed under MIT License.