相关问题
.env
设置了自定义参数,但env()
函数读取失败只获取默认值- 编辑
.env
没有生效 - 其他env问题
问题描述
在配置完.env
后(增加了一些自定义KEY) 在程序中使用env()助手函数没有获取的键值。
在Larave文档相关操作说明(config):需要删除env缓存文件并重新生成。执行发现依然没有生效。
可是检查.env
文件参数是没问题的,了解env()和config()区别后更是不解,明明用的env()的助手行数直接获取env文件中的参数,和缓存没有关系,但实际发现确实读取不到,获取的是env()参数二设置的默认值。最终也很疑惑希望知情之人能告知一二。
解决过程
- 检查
.env
配置文件中设置正确的参数
SERVICE_IP="42.XXX.XXX.163"
TENCENTCLOUD_SECRET_ID=AKIDgXXXXXXXXXXXXXXXXXXXXXXXXMtENL4
TENCENTCLOUD_SECRET_KEY=cwDPciXXXXXXXXXXXXXXXVYXLwKVWM
TENCENTCLOUD_CAPTCHA_APPID=1900000000
TENCENTCLOUD_APPSECRET_KEY=hi8XXXXXXXXXXXXXXXX6tqbU
WECHAT_APP_ID=wx000000000000ce
WECHAT_APP_SECRET=80cXXXXXXXXXXXXXXfb18
WECHAT_TOKEN=76976000000000000000acb834a
WECHAT_ENCODING_AES_KEY=u7u2B00000000000000001jZrv9
- 设置config配置参数
/config/services.php
return [
...
'easywechat' => [
'official_account' => [
'app_id' => env('WECHAT_APP_ID', ''),
'secret' => env('WECHAT_APP_SECRET', ''),
'token' => env('WECHAT_TOKEN', ''),
'aes_key' => env('WECHAT_ENCODING_AES_KEY', '')
],
],
'tencentcloud' => [
'secret_id' => env('TENCENTCLOUD_SECRET_ID', ''),
'secret_key' => env('TENCENTCLOUD_SECRET_KEY', ''),
'captcha_appid' => env('TENCENTCLOUD_CAPTCHA_APPID', ''),
'appsecret_key' => env('TENCENTCLOUD_APPSECRET_KEY', '')
],
'service_ip' => env('SERVICE_IP', '')
];
- 删除config缓存并重新生成
#清除config缓存文件
php artisan config:clear
#生成config缓存文件
php artisan config:cache
- 测试
请在需要获取参数的地方使用config()助手函数
dd(config('services.tencentcloud.captcha.appid'));
dd(config('services.service_ip'));
最优雅的方式env()方法不要在业务代码中使用,只在配置文件中使用。
拓展
一,最优雅获取配置方式
上述"解决过程"为最佳方式
二,助手函数中env()和config()区别
助手函数 | 用途 | 用法 | 示例 |
---|---|---|---|
env() | 函数用于直接从 .env 文件中读取环境变量。它主要用于在配置文件中读取环境变量,以便在不同的环境中使用不同的配置值。 | env('API_KEY', 'default_value'); | 在.env文件中写法 API_KEY=your_api_key |
config() | 用于从配置文件中读取配置值。配置文件位于 config 目录下,每个文件对应一个特定的配置领域。 | config('app.api_key'); | 在/config/app.php写法 return ['api_key' => env('API_KEY', 'default_key')]; |
两者区别
读取来源不同:
- env() 从 .env 文件中读取环境变量。
- config() 从 config 目录下的配置文件中读取配置值。
使用场景不同:
- env() 通常用于在配置文件中读取环境变量,以便在不同的环境中使用不同的配置值。
- config() 用于在代码中读取配置文件中的配置值。
缓存机制不同:
- env() 不会被缓存,每次调用都会从 .env 文件中读取。
- config() 会被缓存,使用 php artisan config:cache 命令生成的缓存文件 bootstrap/cache/config.php 中读取配置值,提高性能。
评论