Laravel 配置:获取环境变量 0 个改进

说明

本文介绍多种方法获取环境变量的方法,来从 .env 里获取内容。

获取环境变量

方法一、Laravel 封装的辅助函数:

env('APP_DEBUG')

方法二、第三方包 phpdotenv 自带的辅助函数:

getenv('APP_DEBUG')

方法三、传统的 PHP 环境变量数组 $_ENV

$_ENV['APP_DEBUG']

方法四、服务器信息数组

$_SERVER['APP_DEBUG']

命令行测试下:

$ php artisan tinker
>>> env('APP_DEBUG')
=> true
>>> getenv('APP_DEBUG')
=> "true"
>>> $_ENV['APP_DEBUG']
=> "true"
>>> $_SERVER['APP_DEBUG']
=> "true"
>>> config('app.debug')
=> true

config:cache 的情况

如果在部署过程中执行 config:cache 命令来缓存配置信息,那你应该确保 只从配置文件内部 调用 env 函数。一旦配置被缓存,.env 文件将不再被加载,所有对 env 函数的调用都将返回 null

退出上面的 artisan tinker 命令行,我们先执行以下命令来缓存配置信息:

$ php artisan config:cache

重新进入 Tinker ,再输入同样上面的内容,会输出:

$ php artisan tinker
>>> env('APP_DEBUG')
=> null
>>> getenv('APP_DEBUG')
=> false
>>> $_ENV['APP_DEBUG']
PHP Notice:  Undefined index: APP_DEBUG in Psy Shell code on line 1
>>> $_SERVER['APP_DEBUG']
PHP Notice:  Undefined index: APP_DEBUG in Psy Shell code on line 1
>>> config('app.debug')
=> true

结论

请使用 正确的方式 来设置环境变量,并使用 config() 来读取,确保只从配置文件内部调用 env 函数。

如果你运行了上面的 config:cache 缓存了配置,可以使用以下命令清除缓存:

$ php artisan config:clear
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 1
elesos

短小精悍

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!