haseebmirza / laravel-env-diff
Show missing, extra, and empty .env keys compared to .env.example
Requires
- php: ^8.1
- illuminate/console: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.0|^11.0
README
Stop guessing which env vars you're missing after git pull.
A zero-config Artisan command that compares your .env file against .env.example and instantly tells you what's missing, what's extra, and what's empty. One command. No setup. Works with Laravel 10, 11, 12, and 13.
php artisan env:diff
WARN 2 missing keys (in .env.example but not in .env)
+--------------+
| Key |
+--------------+
| REDIS_HOST |
| MAIL_FROM |
+--------------+
INFO 1 extra key (in .env but not in .env.example)
+--------------+
| Key |
+--------------+
| DEBUGBAR_ON |
+--------------+
WARN 1 empty key (defined but no value)
+--------------+
| Key |
+--------------+
| APP_KEY |
+--------------+
Why?
Every Laravel developer has been here:
- You pull the latest changes
- The app crashes with a cryptic error
- 20 minutes later you realize someone added
STRIPE_SECRETto.env.exampleand you never copied it over
This package catches that in 2 seconds.
It's the git diff for your environment file — simple, fast, and something every Laravel project should have.
Installation
composer require haseebmirza/laravel-env-diff --dev
That's it. The service provider is auto-discovered. No config files to publish, no migrations, no setup.
Usage
php artisan env:diff
What it detects
| Check | Description |
|---|---|
| Missing keys | Keys in .env.example that are not in your .env — the ones that break your app |
| Extra keys | Keys in .env that aren't in .env.example — might be stale or project-specific |
| Empty keys | Keys that exist but have no value — easy to miss during setup |
Custom file paths
Compare any two env files:
php artisan env:diff --example=.env.production --env=.env.staging
CI / CD Integration
The command returns exit code 1 when missing keys are detected, so you can use it as a CI gate:
GitHub Actions:
- name: Check env vars run: php artisan env:diff
GitLab CI:
check-env: script: - php artisan env:diff
Never deploy with missing environment variables again.
Requirements
- PHP 8.1+
- Laravel 10, 11, 12, or 13
Testing
composer test
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
The MIT License (MIT). Please see License File for more information.
Keywords: laravel env diff, laravel environment variables, dotenv compare, env.example sync, missing env keys, laravel artisan command, environment configuration, laravel devtools, env file checker, laravel env validator, dotenv diff, laravel env sync, env audit, environment file compare