原文
一般我们在做开发的时候,程序都会运行在多个环境,起码会3个:开发环境、测试环境、生成环境
三种环境的配置信息是不一样的
数据库配置不一样、debug级别不一样、日志记录级别不一样、缓存不一样,等等。
但是我们用版本管理工具的时候,代码在三种环境下是一样的,所以,如何区分当前运行的是那个环境?

  • 方案1. 是使用.env文件,这个文件不会托管到版本库,每个运行环境都是独立配置的
  • 方案2. 准备多份配置文件,比如config.php、config-local.php,config.php托管在版本库,配个人都一样,config-local.php不托管在版本库,每个人独立配置,运行的时候config-local.php会覆盖config.php中的配置项,缺点是每次搭建环境都需要配置这个文件,比较繁琐。有些人会直接复制config.php为config-local.php,结果导致更改了config.php,其他开发人员不会生效。
  • 方案3. 使用系统环境变量

1 Apache的环境变量设置

指令:SetEnv RUNTIME_ENVIROMENT DEV

配置格式:

ServerAdmin admin@admin.com
DocumentRoot "/var/www/"
ServerName localhost
SetEnv RUNTIME_ENVIROMENT DEV
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common

2 设置Nginx环境变量

指令:fastcgi_param RUNTIME_ENVIROMENT 'DEV'

设置格式:

fastcgi_params文件中配置

fastcgi_param RUNTIME_ENVIROMENT 'DEV';

在nginx.conf中配置

server {listen 80;root /var/www;index index.php;server_name localhost;location /{index index.php;}location ~ .*\.(php|php5)?$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;  #需要在fastcgi_params文件中定义环境变量#或者#fastcgi_param RUNTIME_ENVIROMENT 'DEV';}
}

3 Linux系统下的设置方式

/etc/environment文件中添加环境变量

命令:vi /etc/environment

添加一行RUNTIME_ENVIROMENT=DEV

貌似只在命令行环境生效

4 windows下IIS设置环境变量

1.我的电脑-》右键(选择我的属性)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wqFuRMUh-1641470982142)(https://jums.club/images/article2/f3cbe59dbac54b68654fb358d87a2182.png)]

2.点击高级设置

3.点击环境变量

点击系统环境变量下面的新建按钮添加就可以了

可能需要重启电脑才能生效

使用方法

在PHP中有两个调用方式:

$env = getenv('RUNTIME_ENVIROMENT');

还有超全局变量方式:

$env = $_SERVER['RUNTIME_ENVIROMENT'];

然后根据获取到的环境变量设置就可以了:

defined('YII_ENV') or define('YII_ENV', $_SERVER['RUNTIME_ENVIROMENT'] ?? 'prod');
defined('YII_DEBUG') or define('YII_DEBUG', YII_ENV === 'dev' || YII_ENV === 'test');

Reference

  • https://blog.csdn.net/weixin_30844865/article/details/115198811

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ko3OUho2-1641470982162)(https://jums.club/images/wechataccount.jpg)]

php区分线上环境和测试环境相关推荐

  1. 性能测试之线上引流测试--让性能测试更真实更丰富

    为什么要做引流测试 目前为止大部分的测试是在测试环境下,通过模拟用户的行为来对系统进行验证,包括功能以及性能.在这个过程中,你可能会遇到以下问题: 用户访问行为比较复杂,模拟很难和用户行为一致,模拟不 ...

  2. springboot 常用配置之多环境配置(开发环境、测试环境、生产环境等)

    在上一课中我们通过idea工具没有做任何配置就构建了一个springboot项目,并且已经成功启动了,但我们都很清楚这些都远远不能达到我们实际项目的需求,比如我们要引入我们自己的redis配置.mys ...

  3. Java的开发环境、测试环境、生产环境、UAT环境、仿真环境

    文章目录 一.五种环境 1 开发环境(dev) 2 测试环境(test) 3 生产环境(prod) 4 UAT环境 5 仿真环境 二.测试阶段 重点了解--UT(单元测试,Unit Test) IT( ...

  4. 31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)

    参考链接: Spring官网 Spring官网 外部配置加载顺序的说明 SpringBoot多环境的切换(生产环境.开发环境.测试环境)_周太阳的博客-CSDN博客_springboot测试生产环境切 ...

  5. 软件的开发环境、测试环境(沙盒环境sandbox)、生产环境

    沙盒环境又称测试环境和开发环境,是提供给开发者开发和测试用的环境.在该环境中应用功能没有任何限制,但是在该环境测试情况下将会产生正常资费.  测试环境,测试用(sandbox). Detux: The ...

  6. 测试开发工程师成长日记009 - 环境排排站:开发环境、测试环境、生产环境、UAT环境、仿真环境

    一.五种环境 项目部署环境一般可分为三种:开发环境,测试环境.生产环境,对应过程为:开发->测试->上线: 细分生成环境又分为生产环境和仿真环境,具体概念如下: 而UAT环境指的是用户接受 ...

  7. vue在生产环境、测试环境和开发环境,三种环境下配置不同的api地址

    vue在生产环境.测试环境和开发环境,三种环境下配置不同的api地址 我们大多数在开发的时候,都会有三种环境,一个是开发环境,一个是测试环境,一个是生产环境,我们打包的时候需要根据不同的环境去加载不同 ...

  8. sit是什么环境_测试环境是什么_搭建测试环境要遵循什么原则?

    测试环境是什么? 测试进行软件测试的之前,需要搭建好测试环境.那什么是测试环境呢? 简单的说就是软件运行的平台,即软件.硬件和网络三种环境的合集,也就是说:测试环境=软件+硬件+网络 硬件:包括PC机 ...

  9. 什么是开发环境、测试环境、UAT环境、仿真环境、生产环境?

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/75 软件开发环境(Software Developme ...

最新文章

  1. iOS进阶之架构设计MVC(1)
  2. model.parameters(),model.state_dict(),model .load_state_dict()以及torch.load()
  3. 部署到ABAP服务器上的SAP UI5应用,其index.html的读取逻辑
  4. 安卓平板排行榜_shopee虾皮台湾安卓市场, shopee虾皮直播下载
  5. 数仓搬迁:从方法到实践,带你解决数据一致性对比
  6. 状态空间模型中实际参数估计
  7. 【Java】深入理解Java虚拟机的读书笔记
  8. ssis 角本组件更新数据_使用SSIS脚本组件作为数据源
  9. 在Linux上配置xampp后远程访问域名报错
  10. BZOJ2194: 快速傅立叶之二 (FFT)
  11. 006 与PHP无关的EXCEL分割字符串
  12. 南方cass快捷键命令修改在哪_南方cass快捷键命令
  13. 栈和队列的共同处和不同处
  14. HTPP的请求方式有哪些?
  15. 小红书种草模式有哪些?如何保证种草效果
  16. 华为鸿蒙系统老手机能用吗_华为使用自家“鸿蒙”系统,旧手机的安卓系统可以更新成那个系统吗?...
  17. 1099: PIPI的油田
  18. 面试时如何回答面试官的问题
  19. 虚拟域服务器拒绝连接,远程winrm上的“访问被拒绝”
  20. OC10_数组的内存管理

热门文章

  1. 【mysql升级步骤】windows mysql版本升级 ,mysql 5.6 升级到5.7.27
  2. PCB设计新手入门须知
  3. 频率控制方式及优缺点总结
  4. [JavaSE] 数据类型(变量、整形、长整型、双精度浮点、单精度浮点、字符、字节)
  5. Java八大基本数据类型-详解
  6. Android面试题(含答案)
  7. 用PyInstaller把Python代码打包成单个独立的exe可执行文件
  8. C语言_函数递归举例
  9. STM32F4触摸按键的部分理解
  10. C语言——数据结构之广义表(概念及其存储结构)