pawelabrams/minenv

将 .env 文件中的环境变量使 PHP 可用。phpdotenv 的轻量级替代方案。

dev-master 2020-02-06 21:25 UTC

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.phploadenv()

<?php
require 'minenv.php';
loadenv(__DIR__);

你也可以使用 composer!只需将 pawelabrams/minenv 添加到你的项目需求中。

<?php
require 'vendor/autoload.php';
loadenv(__DIR__);

参数包括

  1. 查找 .env 的路径(必需),
  2. 如果文件不是 .env,请指定文件名,
  3. 选项数组。

目前,唯一可设置的选项是可变性: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