设置环境变量配置的简单方法.env

什么是.env

.env文件位于项目根目录下,作为全局环境配置文件。

通过 .env文件 加载环境变量并且能够自动的通过 getenv(), $_ENV$_SERVER 自动调用.
这是一个PHP版本 Ruby dotenv.

示例

// 运行环境名称
APP_ENV=local
// 调试模式,开发阶段启用,上线状态禁用。
APP_DEBUG=true
// 敏感信息加密密钥,可使用 php artisan key:generate 重新生成。
APP_KEY=
// 项目根目录
APP_URL=http://localhost

// 缓存驱动,默认使用文件作为缓存。
CACHE_DRIVER=file
// 回话驱动,默认使用文件存储SESSION。
SESSION_DRIVER=file
// 队列驱动,默认使用同步模式。
QUEUE_DRIVER=sync

// Redis高性能key-value数据库,使用内存存储,用于数据持久化。
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

// 数据库配置项
DB_HOST=127.0.0.1//数据库主机名
DB_PORT=3306//数据库端口
DB_DATABASE=homestead//数据库名称
DB_USERNAME=homestead//数据库登录账户
DB_PASSWORD=secret//数据库登录密码

优势

  • 把.env加入GIT的.gitignore文件中,可以避免.env文件中的敏感信息泄露
  • 可以不用修改Apache/nginx配置文件,就可以设置环境变量
  • 无需在.htaccess中添加 php_value 值
  • 方便移植和共享 ENV 环境变量值
  • 兼容服务器内置的服务器和 CLI 运行器

使用 composer 安装

curl -s http://getcomposer.org/installer | php
php composer.phar require vlucas/phpdotenv

使用方法

.env文件通常不包含在版本控制内, 它可能包含敏感的 API Key 或者 密码. 所有需要环境变量定义(不敏感的定义)的项目都需要创建一个.env.example文件, 这个环境变量包含他们自己定义的环境变量或者联合开发包含的环境变量. 项目合作开发者可以独立的复制 .env.example 并且重命名为 .env, 并且修改为正确的本地环境配置, 存储密码key或者提供他们必要的值. 在这个使用方法中.env文件应该添加到.gitignore文件中并且永远不会被项目的合作者签入/签出. 这个方法确保里边没有敏感的 API Key 或者 密码在版本控制中出现从而减少了安全风险. 并且开发环境中的配置永远不会告知合作开发者.

添加配置到根目录下的.env文件, 确保.env文件添加到.gitignore从而不会签入到 CVS

S3_BUCKET=dotenv
SECRET_KEY=souper_seekret_key

现在创建一个 .env.example 文件, 并且签入到项目中. 这里配置和环境变量你需要设置的可以留空或者设置一些无关紧要的数据. 这个方法告知人们这些数据是必须的, 但是不会提供真正环境中的数据.

S3_BUCKET=devbucket
SECRET_KEY=abc123

你可以使用以下一行代码加载应用中的 .env 文件:

Dotenv::load(__DIR__);

所有定义的变量都可以通过 getenv 方法访问到, 并且也可以使用超全局变量$_ENV$_SERVER访问到.

$s3_bucket = getenv('S3_BUCKET');
$s3_bucket = $_ENV['S3_BUCKET'];
$s3_bucket = $_SERVER['S3_BUCKET'];

你同样可以使用框架的 Request 类来访问这些变量(如果你使用框架)

$s3_bucket = $request->env('S3_BUCKET');
$s3_bucket = $request->getEnv('S3_BUCKET');
$s3_bucket = $request->server->get('S3_BUCKET');
嵌入变量

在一个变量中嵌入一个环境变量是可以的, 这样对于减少重复很有用.

使用 {$…} 来包裹环境变量 e.g.

BASE_DIR=/var/webroot/project-root
CACHE_DIR={$BASE_DIR}/cache
TMP_DIR={$BASE_DIR}/tmp
不可变

默认来说, Dotenv 认为环境变量是不变的. 这就是说一旦设置就不能变更.

你可以用以下函数将环境变量设置为可变的

Dotenv::makeMutable();

… 同样你也可以使用以下函数让其不再可变

Dotenv::makeImmutable();
要求变量必须设置

使用 Dotenv, 你可以指定这个 ENV 变量必须设置, 如没有设置则会抛出异常. 这对于人们是非常有用的, 如果程序缺少这个变量就不能运行.

使用以下语法:

Dotenv::required('DATABASE_DSN');

或者数组来定义:

Dotenv::required(array('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'));

如果 ENV 变量缺少, Dotenv 将抛出一个 RuntimeException :

Required environment variable missing or value not allowed: 'DB_USER', 'DB_PASS'
允许的值

你可能看到了上边的异常信息, 你可以设定一个可能范围值, 让你的环境变量遵守这个规则

Dotenv::required('SESSION_STORE', array('Filesystem', 'Memcached'));

同样的, 如果环境变量不在这个列表里, 你会收到一个相似的异常信息:

Required environment variable missing or value not allowed: 'SESSION_STORE'

注释

可以使用 # 来注释字符. E.g.

# this is a comment
VAR="value" # comment
VAR=value # comment

使用注释

当一个开发者克隆你的代码库. 他们会收到一个额外的手册 一次性步骤 来手动的复制 .env.example 并且重命名为 .env 并且追加上他们自己的值(或者从其他开发者哪里获取到其他敏感值).

phpdotenv 被用来建立开发者环境但是不应该用在生产环境下. 在生产环境下, 需要设置真实的变量而不必每次使用请求的时候都使用 .env 文件进行重载.

这个可以通过自动化部署工具来实现, 例如: Vagrant, chef, Puppet, 或者手动的通过云主机来实现, 例如: Pagodabox, Heroku.

参考

https://segmentfault.com/a/1190000010886175

### 回答1: 在Vue项目中,.env文件是用来配置环境变量的文件。它的作用是在不同的环境之间设置不同的配置参数,方便在开发、测试和生产环境中进行不同的配置。 首先,我们需要在Vue项目的根目录下创建一个.env文件,文件名必须以.env开头,可以结合环境进行命名,比如.env.development是用于开发环境的配置文件,.env.production是用于生产环境的配置文件。 在.env文件中,我们可以定义各种各样的环境变量,如API接口地址、端口号、静态资源地址等。比如,我们可以在.env.development文件中定义一个名为VUE_APP_API_URL的变量,它的值可以是开发环境的API地址。 在Vue项目的代码中,我们可以使用process.env来获取定义在.env文件中的环境变量。例如,我们可以使用process.env.VUE_APP_API_URL来获取API地址。这样,在不同的环境下,我们只需要在对应的.env文件中修改变量的值即可。 需要注意的是,以VUE_APP开头的变量会被自动载入到项目的process.env中,所以我们只需要在代码中使用process.env.VUE_APP开头的变量即可,无需手动导入。 另外,我们还可以创建不同的.env文件,如.env.staging用于测试环境的配置。这样,我们可以根据当前所处的不同环境,自动读取相应的.env文件中的配置参数,而无需手动切换配置文件。 总的来说,通过在Vue项目中使用.env文件配置环境变量,可以方便我们在不同的环境中进行灵活的配置,提高开发效率和项目的可维护性。 ### 回答2: 在Vue项目中,.env文件是用来配置环境变量的。通过使用.env文件,我们可以在不同的环境中设置不同的变量值,从而方便我们在开发、测试和生产环境中切换。 首先,我们需要在Vue项目的根目录下创建一个名为.env的文件。在这个文件中,我们可以设置不同的变量,每个变量都有一个键值对,以等号分隔。例如,我们可以设置一个名为VUE_APP_API_URL的变量,并为其赋值为后端API的URL地址: VUE_APP_API_URL=http://api.example.com 在Vue项目中,我们可以通过使用process.env来访问.env文件中设置的变量。以VUE_APP_API_URL为例,在我们的代码中可以这样使用: const apiUrl = process.env.VUE_APP_API_URL 需要注意的是,我们需要在变量名前面加上前缀VUE_APP_,以确保这些变量能够被识别并使用。这是因为Vue CLI在构建过程中只注入以VUE_APP_前缀命名的变量。 另外,.env文件还支持在不同的环境中设置不同的值。我们可以创建三个不同的.env文件来分别配置开发、测试和生产环境中的变量。在Vue项目中,默认会根据我们的打包指令自动寻找和使用对应的.env文件。 例如,我们可以创建.env.development、.env.test和.env.production文件,并在各自的文件中设置不同的变量值。在开发过程中,我们使用npm run serve来运行开发服务器,此时会自动加载.env.development文件中的变量。同理,在打包生产环境时,会自动加载.env.production文件中的变量。 通过使用.env文件,我们可以轻松地配置Vue项目中的环境变量,从而实现在不同环境中的灵活切换和配置。这对于处理API地址、密钥等敏感信息非常有用。同时,它也方便了团队成员之间的协作和代码的复用。 ### 回答3: 在Vue项目中,可以使用`.env`文件进行配置。`.env`文件是用来设置环境变量的文件。 首先,在项目根目录下创建`.env`文件,并在其中添加需要的配置。`.env`文件是一个键值对的文件,每行为一个配置项,格式为`键=值`。 例如,我们可以在`.env`文件中设置以下配置: ``` VUE_APP_API_URL=http://api.example.com VUE_APP_DEBUG=true VUE_APP_VERSION=1.0.0 ``` 其中,`VUE_APP_API_URL`是一个API的URL地址,`VUE_APP_DEBUG`是一个调试标志,`VUE_APP_VERSION`是项目的版本号。 在Vue项目中,可以通过`process.env`对象来访问这些配置项。例如,可以在代码中使用`process.env.VUE_APP_API_URL`来获取API的URL地址。 需要注意的是,以`VUE_APP_`开头的配置项会被自动注入到项目中,其他以`VUE_APP_`开头的配置项则不会被注入到项目中。这是为了防止敏感信息被意外暴露在项目中。 此外,`.env`文件还支持不同的环境配置。例如,可以创建`.env.development`文件来设置开发环境的配置项,`.env.production`文件来设置生产环境的配置项。根据不同的环境,Vue会自动加载相应的配置文件。 总结来说,`.env`文件提供了一种简单方便的方式来配置Vue项目的环境变量,可以根据需要设置不同的配置项,并通过`process.env`对象访问这些配置项。这样可以有效管理项目中的配置,提高代码的可维护性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙在山东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值