Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案
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默认的值终极解决方案相关推荐
- 项目中:Json文件的读取
项目中:Json文件的读取 读Json文件 取Json文件中内容 举例: 举例:Json文件内容如下(Flickr8k) {'images':[{'sentids': [39300, 39301, 3 ...
- 如何在Laravel 中对大文件进行加密?
我将其称为 FileVault 包,您可以 GitHub 上查看它. 如果您想跳过本教程,可以直接转到 GitHub 存储库并开始使用此软件包. 该扩展包包括了详细的使用文档. 教程 在这个教程中,我 ...
- java读取系统中指定的文件_java读取jar中指定的文件
Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...
- android读取assets中的html文件,android读取assets文件.htm
android读取assets文件 android读取assets文件 style='FONT-SIZE: 14px; FONT-FAMILY: verdana, "ms song" ...
- 使用Matlab对PIV数据中的dat文件进行读取数据并求平均值
该方法是借鉴 争渡.争渡博主的文章,在他的文章上略微改动,进行求解. Matlab新手对PIV数据的大量dat文件中的某一列进行平均值计算,该方法可以对整个文件夹内的dat文件进行求平均值,对于文件名 ...
- python中codecs_Python3 中codecs进行文件的读取
简单的概念与说明 编码(动词):按照某种规则(这个规则称为:编码(名词))将"文本"转换为"字节流".而在python 3中则表示:unicode变成str 解 ...
- python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
本问题已经有最佳答案,请猛点这里访问. 我想用open("page.html","r")读取HTML文件. 我做到了没有问题. 我的问题是Python将哪些文件 ...
- python下载网页中的pdf文件_Python读取网页上的pdf文件,输出字符串
读取一个本地pdf文件,输出字符串 # -*- coding: UTF-8 -*from urllib import urlopenfrom pdfminer.pdfinterp import PDF ...
- matlab批量处理文件夹中的csv文件(读取、处理、输出)
背景:用仪器测试器件的电学特性,得到的全是csv文件,上百个文件需要提取出合适时间范围内的电流平均值. 因为是同一台机器导出的,csv文件里面都是有规律的,我只需要其中两列关于时间和电流的数据,所以读 ...
最新文章
- 网络管理员比赛回顾04-DHCP
- java 反射代价_Java反射机制
- 如果说编程语言是一种宗教,你的信仰是?
- jQuery函数学习
- ajax mysql项目 react_Github MIT开源银行电子支付系统(ReactJS+Nodejs+Mysql)
- SmartDraw2008破解过程总结
- Chrome OS 0.4.220 Beta下载已发布
- python 模块 包 库_模块(包、库)
- 算法导论 思考题1-1
- JavaScript 高级程序设计笔记
- 聊一聊我在腾讯的外包同事
- CentOS 基础命令 III
- 卖衣服有什么引流产品?微商卖衣服引流推广?
- 重新做计算机老师的说说,说说我们电脑班老师 ── 刁元清
- 开源权限引擎可能理解了骇客帝国
- java连接mysql(java连接mysql的jar包)
- 静态分析工具综述:Roodi、Rufus、Reek和Flay
- i386, x86, x86_64, IA-32, IA-64, 安腾, AMD64 的关系是什么?
- 《安富莱嵌入式周报》第299期:IAR发布嵌入式软开发基础问题PDF,树莓派单片机运行Verilog,纯汇编实现的游戏, 电磁辐射频谱图, 乐鑫ESP32-P4
- 分数乘法计算机题,《分数乘法》测试题