PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > 工作总结

PHP编程:探究Laravel使用env函数读取环境变量为null的问题

管理员 2025-02-27
工作总结
5

《PHP编程:探究Laravel使用env函数读取环境变量为null的问题》要点:
本文介绍了PHP编程:探究Laravel使用env函数读取环境变量为null的问题,希望对您有用。如果有疑问,可以联系我们。
 

PHP实例发现问题

PHP实例在 Laravel 项目中,如果执行了 php artisan config:cache 命令把配置文件缓存起来后,在 Tinker 中(Tinker 是 Laravel 自带的一个交互式命令行界面),使用 env 函数读取环境变量的值为 null,只有执行 php artisan config:clear 清除配置缓存后就可以读取了,这是为什么呢?

PHP实例一探究竟

PHP实例打开 .env 文件看,这些都是有值的:

PHP实例APP_ENV=localAPP_KEY=base64:JHE5bOkRg283uT0n1Zq/GgvGEer8ooYiB42/wIcCyvo=APP_DEBUG=trueAPP_LOG_LEVEL=debugAPP_URL=http://www.tanteng.me DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=tanteng.meDB_USERNAME=homesteadDB_PASSWORD=secret

PHP实例如图所示:


PHP实例原因何在?

PHP实例在 Laravel 中,如果执行 php aritisan config:cache 命令,Laravel 将会把 app/config 目录下的所有配置文件“编译”整合成一个缓存配置文件到  bootstrap/cache/config.php,每个配置文件都可以通过 env 函数读取环境变量,这里是可以读取的.但是一旦有了这个缓存配置文件,在其他地方使用 env 函数是读取不到环境变量的,所以返回 null.

PHP实例让我们看看这段代码,Illuminate/Foundation/Bootstrap/DetectEnvironment.php line 18

PHP实例public function bootstrap(Application $app){ if (! $app->configurationIsCached()) { $this->checkForSpecificEnvironmentFile($app);  try {  (new Dotenv($app->environmentPath(), $app->environmentFile()))->load(); } catch (InvalidPathException $e) {  // } }}

PHP实例这个方法在框架启动后就会运行,这段代码说明了如果存在缓存配置文件,就不会去设置环境变量了,配置都读缓存配置文件,而不会再读环境变量了.

PHP实例因此,在配置文件即 app/config 目录下的其他地方,读取配置不要使用 env 函数去读环境变量,这样你一旦执行 php artisan config:cache 之后,env 函数就不起作用了.所有要用到的环境变量,在 app/config 目录的配置文件中通过 env 读取,其他地方要用到环境变量的都统一读配置文件而不是使用 env 函数读取.

PHP实例总结



希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部