dotenv-org / phpdotenv-vault
从加密的 .env.vault 文件中加载环境变量
Requires
- php: ^7.1.3 || ^8.0
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- phpunit/phpunit: ^9.0|^8.0|^7.0|6.0
README
通过扩展phpdotenv的可靠和受信任的基础,引入了.env.vault文件。
扩展标准允许您在生产(和其他)环境中从.env.vault文件加载加密的秘密。由同样开创dotenv-nodejs的人提供。
🌱 安装
$ composer require dotenv-org/phpdotenv-vault
🏗️ 使用
开发使用与phpdotenv相同。
将您的应用程序配置添加到项目根目录下的.env文件中
# .env S3_BUCKET="dotenv" SECRET_KEY="souper_seekret_key"
在应用程序引导过程尽早加载 .env
require 'vendor/autoload.php'; $dotenv = DotenvVault\DotenvVault::createImmutable([__DIR__]); $dotenv->safeLoad();
当应用程序加载时,这些变量将在$_SERVER中可用
$s3_bucket = $_SERVER['S3_BUCKET']; echo $s3_bucket;
🚀 部署
通过以下方式加密环境变量
npx dotenv-vault local build
这将在您的项目中创建一个加密的.env.vault文件以及一个包含加密密钥的.env.keys文件。通过将.env.keys文件中的密钥值复制粘贴到您的服务器或云提供商上来设置DOTENV_KEY环境变量。例如,在heroku上
heroku config:set DOTENV_KEY=<key string from .env.keys>
安全地将.env.vault文件提交到代码中并部署。您的.env.vault文件将在启动时解密,注入环境变量,并按预期工作。
请注意,当设置了DOTENV_KEY环境变量时,环境设置将始终从项目根目录中的.env.vault文件加载。对于开发使用,您可以不设置DOTENV_KEY环境变量,并回退到从.env加载dotenv的行为。
🌴 管理多个环境
您有两种管理多个环境的方法 - 本地管理或库管理 - 都使用dotenv-vault。
本地管理永远不会进行远程API调用。它在您的机器上完全管理。库管理添加了诸如备份您的.env文件、安全跨团队共享、访问权限和版本历史等便利功能。选择最适合您的方法。
💻 本地管理
在项目根目录中创建一个.env.production文件,并将您的生产值放在那里。
# .env.production S3_BUCKET="PRODUCTION_S3BUCKET" SECRET_KEY="PRODUCTION_SECRETKEYGOESHERE"
重新构建您的.env.vault文件。
npx dotenv-vault local build
查看您的.env.keys文件。有一个与您的.env.vault文件中的DOTENV_VAULT_PRODUCTION密码配对的DOTENV_KEY生产密钥。
在您的服务器上设置生产DOTENV_KEY,将.env.vault文件安全地重新提交到代码中,并部署。就是这样!
您的.env.vault文件将在启动时解密,注入生产环境变量,并按预期工作。
🔐 库管理
同步您的.env文件。运行推送命令并遵循说明。了解更多信息
$ npx dotenv-vault push
使用包含的UI管理多个环境。了解更多信息
$ npx dotenv-vault open
构建包含多个环境的.env.vault文件。
$ npx dotenv-vault build
访问您的DOTENV_KEY。
$ npx dotenv-vault keys
在您的服务器上设置生产DOTENV_KEY,将.env.vault文件安全地重新提交到代码中,并部署。就是这样!
❓ 常见问题解答
如果未设置DOTENV_KEY会发生什么?
当未设置 DOTENV_KEY 时,Dotenv Vault 会优雅地回退到 phpdotenv。这对于开发是默认设置,这样您可以专注于编辑您的 .env 文件,并在准备部署环境变量更改之前保存 build 命令。
我应该提交我的 .env 文件吗?
不。我们 强烈 建议不要将 .env 文件提交到版本控制。它应该只包含特定环境的值,例如数据库密码或API密钥。您的生产数据库应该具有与开发数据库不同的密码。
我应该提交我的 .env.vault 文件吗?
是的。这样做是安全且推荐的。它包含您的加密环境变量和保险库标识符。
我可以分享 DOTENV_KEY 吗?
不。这是解锁加密环境变量的密钥。务必小心分享此密钥。不要让它泄露。
贡献
- 将其Fork
- 创建您的功能分支(
git checkout -b my-new-feature) - 提交您的更改(
git commit -am '添加了一些功能') - 推送到分支(
git push origin my-new-feature) - 创建新的Pull Request
更改日志
查看 CHANGELOG.md
许可证
BSD-3