Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案


1.背景

用Laravel框架开发项目,上线后打开APP运行一段时间后会莫名的自动退出登录(前端有自动轮询请求接口),经过排查发现session的key中途会被重置成服务上另一个项目的session_key,这篇博文有相关.env串库说明:https://blog.csdn.net/u010785091/article/details/88715800。后面我把.env里的键添加加个前缀后,退出的频率是降低了,但是没有彻底杜绝。后面发现session_key中途还是会被重置成config中的默认session_key,此时的心情,此处省略一万字......

2.原因

经过咨询Laravel大佬,因为我也是第一次使用这个框架,他们也遇到过该问题,Laravel的确存在偶尔读不到.env并返回空就使用了config中默认值,所以导致用了错误的配置信息连接Redis和数据库失败,继续导致程序无法从Redis中读取session值,因此登录信息就没法拿到了。至于Laravel为什么会存在整个情况,暂不知道情况,如有知道的欢迎在评论留言。

3.解决办法

其实Laravel官方有相关的正确使用.env的姿势,正确姿势是把.env编译到缓存中,这样就不用每次请求都文件读取,一旦缓存了配置以后,就不会再从 .env 文件加载内容了。这样做是有道理的,毕竟 .env 文件是文本内容,解析它的成本还是挺高的,所以生产环境最优雅的方式一定要编译到缓存中。

  • 每次修改env后清楚缓存
php artisan config:clear 
  • 编译生成缓存配置
php artisan config:cache
  • 缓存配置的位置

最后

通过以上方式,就可以完全避免读不到.env文件的问题了,导致一些莫名其妙的bug了,但是要注意,最优雅的方式env()方法不要在业务代码中使用,只在配置文件中使用。

Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案相关推荐

  1. 项目中:Json文件的读取

    项目中:Json文件的读取 读Json文件 取Json文件中内容 举例: 举例:Json文件内容如下(Flickr8k) {'images':[{'sentids': [39300, 39301, 3 ...

  2. 如何在Laravel 中对大文件进行加密?

    我将其称为 FileVault 包,您可以 GitHub 上查看它. 如果您想跳过本教程,可以直接转到 GitHub 存储库并开始使用此软件包. 该扩展包包括了详细的使用文档. 教程 在这个教程中,我 ...

  3. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  4. android读取assets中的html文件,android读取assets文件.htm

    android读取assets文件 android读取assets文件 style='FONT-SIZE: 14px; FONT-FAMILY: verdana, "ms song" ...

  5. 使用Matlab对PIV数据中的dat文件进行读取数据并求平均值

    该方法是借鉴 争渡.争渡博主的文章,在他的文章上略微改动,进行求解. Matlab新手对PIV数据的大量dat文件中的某一列进行平均值计算,该方法可以对整个文件夹内的dat文件进行求平均值,对于文件名 ...

  6. python中codecs_Python3 中codecs进行文件的读取

    简单的概念与说明 编码(动词):按照某种规则(这个规则称为:编码(名词))将"文本"转换为"字节流".而在python 3中则表示:unicode变成str 解 ...

  7. python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...

    本问题已经有最佳答案,请猛点这里访问. 我想用open("page.html","r")读取HTML文件. 我做到了没有问题. 我的问题是Python将哪些文件 ...

  8. python下载网页中的pdf文件_Python读取网页上的pdf文件,输出字符串

    读取一个本地pdf文件,输出字符串 # -*- coding: UTF-8 -*from urllib import urlopenfrom pdfminer.pdfinterp import PDF ...

  9. matlab批量处理文件夹中的csv文件(读取、处理、输出)

    背景:用仪器测试器件的电学特性,得到的全是csv文件,上百个文件需要提取出合适时间范围内的电流平均值. 因为是同一台机器导出的,csv文件里面都是有规律的,我只需要其中两列关于时间和电流的数据,所以读 ...

最新文章

  1. windows python MySQL-python安装过程
  2. Java虚拟机对类加载的处理机制
  3. 使用sublime text 2开发Javacript和jQuery
  4. c语言尚未实现的虚拟函数,编译原理之学习 lua 1.1 笔记 (二) 函数调用与局部变量...
  5. VMWare MAC系统调整磁盘
  6. HashMap暴力枚举(洛谷P1765题题解,Java语言描述)
  7. 研发的未来在哪里?Serverless 云开发来了!
  8. 20190906:(leetcode习题)Shuffle an Array
  9. apache源码安装过程
  10. Python struct模块与简单使用
  11. 头文件自包含是什么意思_女朋友发了一张这样的自拍给我,说想我了,她这是什么意思呢?...
  12. 自动刷新徐小明股市直播内容
  13. 微信在服务器上发不了图片大小,为什么微信发不了图片?这四招教你解决难题...
  14. vivo手机打开手机测试页面,查看电池损耗代码
  15. ACCESS数据库防下载方法 1
  16. xp系统启动数据库服务器,xp系统如何启用数据库服务器
  17. 一本通1034:计算三角形面积
  18. 《跟我学IDEA》一、下载安装idea,设置背景字体编码,配置JDK
  19. 【每日新闻】中国供应商:苹果新iPhone能为其它设备无线充电
  20. 常州儿童学机器人编程_常州幼儿编程机器人

热门文章

  1. 【Angular】—— TypeScript问号的奇特用法
  2. 参数校验之Hibernate-validator的基本使用
  3. 蓝桥杯竞赛题库(6)
  4. 基于STM32F103移植canfestival协议栈(从站)CANopen
  5. SWUST OJ 696: Soldiers
  6. 青岛大学_王卓老师【数据结构与算法】Week04_12_案例分析与实现2_学习笔记
  7. uSurvival 1.41多人在线生存逃杀吃鸡类游戏源码
  8. 阿里云天池AI龙珠计划-Python训练营学习笔记task2
  9. 中国智慧物流发展报告
  10. nodejs request模块