connectholland/env-var-loader-bundle
symfony/http-foundation, symfony/dependency-injection). However, Laravel’s native DI container and configuration system differ from Symfony’s, requiring abstraction layers or middleware..env files are central but lack native support for distributed sources (e.g., Vault, Etcd, AWS SSM).etcd, vault) is extensible, but Laravel’s Dotenv or vlucas/phpdotenv would need to be replaced or wrapped.Illuminate\Container is incompatible with Symfony’s DependencyInjection. A facade layer or service provider wrapper would be required to expose loaders as Laravel services.env_var_loader.yaml) must be translated to Laravel’s config/env_var_loader.php or environment variables.hashicorp/vault-api-php, etcd/etcd) and error handling.symfony/console).spatie/laravel-vault or vlucas/phpdotenv extensions..env vs. Vault priority)?symfony/dependency-injection for DI compatibility).EnvVarLoaderServiceProvider).config/env_var_loader.php with fallback to .env.EnvVarLoader facade for runtime access (e.g., EnvVarLoader::get('VAULT_PATH')).symfony/dependency-injection).ContainerBuilder with Laravel’s Container.EnvVarLoaderManager service to orchestrate loaders (prioritization, caching).config/env_var_loader.php..env if Vault fails).hashicorp/vault-api-php; may need Laravel-specific auth (e.g., spatie/laravel-vault integration).etcd/etcd PHP client; test with Laravel’s request lifecycle (e.g., Etcd timeouts during boot).aws/aws-sdk-php; may need custom parameter store loader.getenv() and $_ENV are populated post-loading (may require register_shutdown_function hooks).bootstrap/app.php to avoid missing config in AppServiceProvider.booted event to trigger reloads (e.g., for dynamic Vault paths).etcd → vault → .env).LoaderInterface to standardize input/output.EnvVarLoader::load(['etcd', 'vault'], 'DB_HOST').symfony/dependency-injection:^6.0).config/env_var_loader.php to avoid scattered .env overrides.config:cache to optimize repeated loader calls.schedule:run.EnvVarLoader::debug()).[EnvVarLoader] Loaded 'DB_HOST=127.0.0.1' from etcd (priority: high)
[EnvVarLoader] Overridden by vault: 'DB_HOST=10.0.0.1'
| Loader | Laravel SDK | Error Handling | Fallback |
|---|---|---|---|
| Vault | HashiCorp | Retry 3x, log to Sentry | .env |
| Etcd | etcd/etcd | Circuit breaker | .env |
| AWS SSM | aws-sdk | Exponential backoff | .env |
deferred providers.memory or redis with TTL (e.g., 5 minutes for Vault).cache()->lock() for critical sections.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Vault server unavailable | App crashes on missing secrets | Fallback to .env + alerting |
| Etcd cluster partition | Inconsistent env vars | Quorum-based loader (e.g., 2/3 nodes) |
Corrupted .env file |
Silent failures | Validate schema (e.g., spatie/laravel-data) |
| Loader plugin crash | Memory leaks | Isolate loaders in separate processes (e.g., Laravel Horizon) |
README.md with:
config/env_var_loader.php.How can I help you explore Laravel packages today?