首页 > 其他分享 >Laravel 配置多环境env文件(转)

Laravel 配置多环境env文件(转)

时间:2023-10-28 11:33:07浏览次数:35  
标签:Laravel 文件 app hostname dev env prod stage

原文:https://learnku.com/articles/56684

1、前提

主要实现方法是自己提供的 useEnvironmentPath (), 有兴趣的同学可以去研究下.
每个公司的要求不一样,有的习惯进行条件编译加载配置文件,有的不需要条件编译,怕安全泄露 token 等关键信息,手动修改配置信息.
像国内小公司基本不怎么分测试环境,正式环境,更没有减振环境,属于直接替换配置文件。所以呢进来看看学习学习。公司遇到过手动修改配置文件,正式上线后整个项目崩溃的情况。调查结果有个配置文件忘记写了。我觉得只要有人手动替换这种操作的,稍不注意就会出问题.
如果你很不细心,这个一定要时刻准备着,准备跑路.

2、配置 env 文件夹

删除自带的.env 等文件
添加 env 文件夹
并添加.dev.env, .stage.env, .prod.env 文件

3、修改 app.php

//...
//...
//忽略上面代码
$app->singleton(
  Illuminate\Contracts\Debug\ExceptionHandler::class,
  App\Exceptions\Handler::class
);

/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
//**********************代码添加到这块*******************************//
/**根据服务器的hostname,加载不同的.env文件
*获取主机名 
*这里方式可以根据自己需求修改 可以根据自己域名区分.
*我的这里根据服务器的hostname进行区分
*dev环境hostname:dev-projectname-api-web
*stage环境hostname:stage-projectname-api-web
*prod环境hostname:prod-projectname-api-web
*/

$hostname = gethostname();

//自定义env文件路径
$app->useEnvironmentPath(realpath(__DIR__.'/../env'));
$strProd = 'prod';
$strStage = 'stage';
$strDev = 'dev';
if (strpos($hostname, $strProd) !== false) {
  //prod环境
  $app->loadEnvironmentFrom('.prod.env');
} elseif (strpos($hostname, $strStage) !== false) {
  //stage环境
  $app->loadEnvironmentFrom('.stage.env');
} elseif (strpos($hostname, $strDev) !== false) {
  //dev环境
  $app->loadEnvironmentFrom('.dev.env');
} else {
  //其他情况,走dev分支
  $app->loadEnvironmentFrom('.dev.env');
}
//**********************代码添加到这块*******************************//
return $app;

标签:Laravel,文件,app,hostname,dev,env,prod,stage
From: https://www.cnblogs.com/pine007/p/17793879.html

相关文章

  • 从内部存储说起,你手机里的文件都是些什么?
    下面是内部存储的路径,也就是手机系统自带的文件管理所能使用的路径/storage/emulated/0/还有一些软连接指向这个路径/sdcard/,这个目录链接至下面那个目录/storage/self/primary/,这个目录链接至/storage/emulated/0/也就是说,这三个目录,无论你访问哪一个,其实都是在访问/storag......
  • 10G 大文件、秒传、断点续传、分片上传
    超大文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比较好......
  • 第13节 文件io
    什么是文件/O在Pytho中,文件/O(输入/输出)是指与文件进行交互的过程。这包括读取文件的内容、写入数据到文件以及执行其他与文件相关的操作。在Python中,文件/O可以通过内置的open()函数来实现。这个函数用于打开一个文件,并返回一个文件对象。通过使用文件对象,可以对文件进行各种操......
  • 用友U8-Cloud upload.jsp 任意文件上传漏洞
    漏洞简介U8cloud聚焦成长型、创新型企业的云ERP,基于全新的企业互联网应用设计理念,为企业提供集人财物客、产供销于一体的云ERP整体解决方案,全面支持多组织业务协同、智能财务,人力服务、构建产业链智造平台,融合用友云服务实现企业互联网资源连接、共享、协同。该系统upload.......
  • Java 音频处理,音频流转音频文件,获取音频播放时长
    1.背景最近对接了一款智能手表,手环,可以应用与老人与儿童监控,环卫工人监控,农场畜牧业监控,宠物监控等,其中用到了音频传输,通过平台下发语音包,发送远程命令录制当前设备音频并将音频分包传输到服务器上生成音频文件等。其中关于音频的一些简单操作封装成了工具包。2.音频工具包引入jaud......
  • cmd 当前目录下所有以my开头的文件夹
    在命令提示符中,你可以使用以下命令来查找当前目录下所有以"my"开头的文件夹:dir/b/admy*这个命令的含义是:dir是一个用于列出目录中文件和子目录的命令。/b选项表示“简洁格式”,只显示文件/目录名,不显示其它信息。/ad选项表示只列出“目录”。my*是一个通配符,表示所有以"my"......
  • 前端大文件断点续传
    昨天整理了前端实现大文件上传通过文件切片进行处理,今天继续拓展进行断点续传原理断点续传的原理在于前端/服务端需要记住已上传的切片,这样下次上传就可以跳过之前已上传的部分,有两种方案实现记忆的功能前端使用localStorage记录已上传的切片hash服务端保存已上传的切片hash......
  • Linux文件和目录操作函数
    1.文件系统1.1文件存储1.1.1inode本质:struct结构体。存储文件的属性信息。如:权限、类型、大小、时间、用户、盘块位置大多数的inode保存在磁盘中,少量常用、近期使用的inode保存在内存中1.1.2dentry目录项本质:struct结构体{文件名、inode号...}文......
  • OpenCV4.1.0中的GPU版本的SURF特征点提取类的命名空间、所在头文件和类名
    OpenCV4.1.0中的GPU版本的SURF特征点提取类的命名空间、所在头文件和类名情况如下:类名:cv::cuda::SURF_CUDA所在的命名空间:cv::cuda所在头文件:$\build\install\include\opencv2\xfeatures2d。其中,$是编译OpenCV4.1.0的基础模块和扩展模块时,OpenCV4.1.0源代码所在的位置。 翻......
  • Linux mkdir命令:创建目录(文件夹)
    mkdir命令,是makedirectories的缩写,用于创建新目录,此命令所有用户都可以使用。mkdir命令的基本格式为:[root@localhost~]#mkdir[-mp]目录名-m选项用于手动配置所创建目录的权限,而不再使用默认权限。-p选项递归创建所有目录,以创建/home/test/demo为例,在默认情况下,你需要......