pawelabrams / minenv
将 .env 文件中的环境变量使 PHP 可用。phpdotenv 的轻量级替代方案。
dev-master
2020-02-06 21:25 UTC
Requires
- php: ^5.6 || ^7.0
This package is auto-updated.
Last update: 2024-09-07 07:17:13 UTC
README
使用 getenv()
、$_ENV
和 $_SERVER
从 .env
文件的内容中获取环境变量。一个步骤,无需废话。
对 PHP dotenv 的不完全重写。
目的
你不应该将生产密钥提交到公共仓库。 永远不要。 永远不要。 你可以发布开发者设置,当然可以——如果你知道你的设置是安全的,并且无法从外部访问。但对于大多数人来说,配置包含敏感数据,如外部 API 的密钥、实时数据库凭据和其他公众不应看到的信息。
忽略配置文件是好的,但在生产服务器上直接在环境中设置敏感数据会更好。并且为了模仿开发中的行为?只需使用 minenv。
用法
在方便的位置列出 .env
文件中的变量,远离用户
SECRET_KEY=314b0r47353cr37k3y
APP_DSN="mysql:host=localhost;dbname=yourdb;charset=utf8"
APP_USER=yourname
APP_PASS=w3zn13pr0bujh4k0w4c
要使用这些变量,请 require minenv.php
和 loadenv()
。
<?php require 'minenv.php'; loadenv(__DIR__);
你也可以使用 composer!只需将 pawelabrams/minenv
添加到你的项目需求中。
<?php require 'vendor/autoload.php'; loadenv(__DIR__);
参数包括
- 查找
.env
的路径(必需), - 如果文件不是
.env
,请指定文件名, - 选项数组。
目前,唯一可设置的选项是可变性:both ['mutable' => true]
和 ['mutable']
将 .env
变量的优先级设置得比已设置的变量高。
更多技巧
可以使用 #
添加注释;在使用时,确保在值和注释之间至少有一个空格。
# this is a comment!
APP_USER = root # the comment's ok, but don't use root user for apps unless necessary
APP_PASS = 3#thisIsStillPartOfPassword
使用不同的文件名
<?php require 'minenv.php'; loadenv(__DIR__, '.config');
设置为可变(.env
覆盖任何它能覆盖的内容)
<?php require 'minenv.php'; loadenv(__DIR__, '.env', ['mutable']); # or array('mutable') / array('mutable' => true)
在 dotenv 中,你可以添加 export
以便在 bash 中 source
文件,但 minenv 目前不支持嵌套变量($APP_DSN
)。它们在 bash 中仍然有效,所以你已经得到了警告!
export S3_BUCKET=bucketname