Laravel 5.4 基于环境的配置文件
Laravel 5.4 environment based config files
我正在尝试根据环境更改 Laravel 配置变量,但我不知道如何更改。
获取配置的代码是
Config::get( 'contants.api_url' );
我正在尝试为实时环境和开发环境提供单独的结果。
真实场景
我需要重写一些配置文件,以便使用开发环境的每个人都具有相同的基本配置。我不能为此使用 .env 文件,因为它不在团队之间共享,每个人都有自己的版本。
我尝试了什么:
我在这里读到 Laravel 5 configuration - environments and overriding that you can create subfolders within your /config folder, that match the environment, to override the default config files. Alas it did not work for me and the Laravel 5.4 documentation on the subject matter (https://laravel.com/docs/5.4/configuration#retrieving-environment-configuration) 没有谈到这个选项,因此我认为它可能已被弃用。
一种选择是使用服务提供商。如果您只想覆盖一个或两个值,那么您最好使用 AppServiceProvider
,否则我建议创建一个新服务(例如 ConfigServiceProvider
)。
在您的服务提供商的 boot()
方法中,您可以添加如下内容:
if (app()->environment() === 'local') {
config()->set('contants.api_url', 'http://example.com');
}
要根据环境更改配置变量,可以这样做:
示例文件: config/database.php
'mysql' => [
'driver' => mysql,
'url' => env('DATABASE_URL'),
'host'=> (env('APP_ENV') === 'local' ? env('DB_HOST_LOCAL') : env('DB_HOST_PRODUCTION')),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'default'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'options' => (env('APP_ENV') === 'local' ? [
'some_option' => env('SOME_ENV')
] : []),
],
已在 Laravel 5.8 上测试和工作。
我正在尝试根据环境更改 Laravel 配置变量,但我不知道如何更改。
获取配置的代码是
Config::get( 'contants.api_url' );
我正在尝试为实时环境和开发环境提供单独的结果。
真实场景
我需要重写一些配置文件,以便使用开发环境的每个人都具有相同的基本配置。我不能为此使用 .env 文件,因为它不在团队之间共享,每个人都有自己的版本。
我尝试了什么:
我在这里读到 Laravel 5 configuration - environments and overriding that you can create subfolders within your /config folder, that match the environment, to override the default config files. Alas it did not work for me and the Laravel 5.4 documentation on the subject matter (https://laravel.com/docs/5.4/configuration#retrieving-environment-configuration) 没有谈到这个选项,因此我认为它可能已被弃用。
一种选择是使用服务提供商。如果您只想覆盖一个或两个值,那么您最好使用 AppServiceProvider
,否则我建议创建一个新服务(例如 ConfigServiceProvider
)。
在您的服务提供商的 boot()
方法中,您可以添加如下内容:
if (app()->environment() === 'local') {
config()->set('contants.api_url', 'http://example.com');
}
要根据环境更改配置变量,可以这样做:
示例文件: config/database.php
'mysql' => [
'driver' => mysql,
'url' => env('DATABASE_URL'),
'host'=> (env('APP_ENV') === 'local' ? env('DB_HOST_LOCAL') : env('DB_HOST_PRODUCTION')),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'default'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'options' => (env('APP_ENV') === 'local' ? [
'some_option' => env('SOME_ENV')
] : []),
],
已在 Laravel 5.8 上测试和工作。