hzanchu/env

laravel env manager

Maintainers

Details

gitee.com/lv_anchu/env.git

Installs: 133

Dependents: 0

Suggesters: 0

Security: 0

Type:php-extension

3.2 2024-05-08 03:28 UTC

This package is not auto-updated.

Last update: 2024-11-06 05:59:50 UTC


README

Laravel .env manager


composer require hzanchu/env

概况

此包的主要作用就是合理管理.env文件,将.env文件分解为如下6个文件,并对env/目录下的配置文件加密后纳入git管理,减少上线时对.env的手动配置:

  • .env:不纳入git管理,保存少量配置;
  • env/.env.all:所有环境的公共配置存放在这里;
  • env/.env.local:本地环境有关的配置存放在这里;
  • env/.env.dev:开发环境有关的配置存放在这里;
  • env/.env.pre:测试环境有关的配置存放在这里;
  • env/.env.live:生产环境有关的配置存放在这里;

.env中存储加密时使用的key,要保证在所有环境中,加密key都是一致的,您需要在.env文件中添加如下配置:

# 加密KEy
ENV_KEY=xxxx

注意:如果相同配置出现在多个env文件中,优先级:.env > .env.* > .env.all

版本说明

tag: 3.*

  • 这个版本采用laraval自己的加密算法进行加密解密(crypt);
  • 需要在.env中配置APP_KEY:APP_KEY=Env::generateKey('AES-256-CBC')
  • 生成APP_KEY的$cipher需要在config/app.php中配置:'cipher' => 'AES-256-CBC'

tag: 2.*

  • 这个版本采用openssl加密算法进行加密;
  • 加入了解密命令行,命令为:php artisan env:decode

tag: 1.*

这个版本采用自定义的加密算法,实现加密;

1. 配置系统

1.1 获取env/.env.*配置

对.env.*的获取,必须在获取.env之后,且在loadConfig文件之前,因此需要调整如下代码: app/Http/Kernel.phpapp/Console/Kernel.php:

<?php
namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    protected function bootstrappers()
    {
        $boostrapers = parent::bootstrappers();
        return \Anchu\Env\Kernel::bootstrappers($boostrapers);
    }
}

1.2 命令行加密命令

要使用此包提供的加密服务,需要将加密命令注册到系统中,如下: app/Console/Kernel.php

<?php

namespace App\Console;

use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Anchu\Env\Commands\EncodeEnv;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        EncodeEnv::class
    ];
}

2、加密

您可以在.env/env/.env.*文件以明文的方式添加配置,但是在提交代码到git前,需要运行加密命令对配置文件进行加密:

php artisan env:encode

上述命令会完成如下两个步骤:

  • .env文件的PASSWORD相关的配置进行加密;
  • env/.env.*的所有配置文件都进行加密;

3、解密

在获取到所有.env文件之后,需要对已经loadConfig的配置进行解密,解密操作在如下文件中执行: app/Providers/AppServiceProvider.php:

<?php

namespace App\Providers;

use Anchu\Env\Env;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    private function recoverConfig()
    {
        Env::decode();
    }
}