在PHP中管理环境变量

  现在我们都能用很多个编程语言开发,当我开始熟悉PHP时,我会忽略其它语言的特点。我用过其他语言(比如Node.js),但在PHP中没有看到一种轻松控制设置环境变量的方法,特别是在开发中。在Node.js中,dotenv库非常适合这种情况,后来我在PHP中,发现vlucas已经创建了phpdotenv,我准备将这个库应用到PHP项目中。

  管理环境变量

  在开发环境下,我们的代码应该从本地读取文件而不是实装环境变量中读取变量。这样可以更容易地切换项目,我们可以为每个项目编写一个文件,不必重新导出环境变量(或者在切换项目时没有启动新的shell,某些环境变量是错误的)。另外,可能在为其他人编写代码时,例如示例应用程序或入门工具包,.env文件中提供了设置所需值的清晰列表。

  .env配置文件

  通常,我用两个文件:

  .env是将从中读取实际值的文件。将文件名放入.gitignore,以便在提交时不会将您的实际环境/配置也提交到git中!

  .env-example只保存用户设置项目所需的键,而不包括值。这样在后面可以轻松复制此文件并把空白值处填写完整,以使事情顺利进行。

  请注意,我们也可能需要一些用于生产环境的开关,比如CI框架中系统设置的环境变量,它不用部署.env。

  .env文件内容类似如下所示:

  AWESOME_API_KEY=abc123

  AWESOME_API_SECRET=abcdef0123456789

  如果值已经存在,我们就可以在PHP应用程序使用它们。

  PHPdotenv

  首先,我们需要使用Composer将phpdotenv包(https://github.com/vlucas/phpdotenv)添加到你的项目中:

  composer require vlucas/phpdotenv

  然后,在代码中添加这样的东西到index.php的头部或框架中相关设置的地方(如require “vendor/autoload.php”后可能是一个正确的地方)。代码如下:

  $dotenv = new DotenvDotenv(__DIR__);

  $dotenv->load();

  然后,所有变量都可以在自己期望的地方使用,比如$_ENV['AWESOME_API_KEY']。

  这样在开发中使用环境变量就像使用配置文件一样简单,感谢Vance同学创建这个优秀的库~

在PHP中管理环境变量的更多相关文章

  1. 更优雅的配置:docker/运维/业务中的环境变量

    目录 docker-compose 环境变量 .env 文件 env_file docker stack 不支持基于文件的环境变量 envsubst envsubst.py 1. 使用行内键值对 2. ...

  2. Xcode 8:在 Active Compilation Conditions 中自定义环境变量

    来源:没故事的卓同学 链接:http://www.jianshu.com/p/96b36360bb2d 在Xcode 7我们在 OTHER_SWIFT_FLAGS中配置环境变量.但是有一个不爽的地方就 ...

  3. bootargs中的环境变量说明和一些常用的uboot命令

    bootargs中的环境变量说明和一些常用的uboot命令 一些常见的uboot命令:Help [command]在屏幕上打印命令的说明Boom [addr]启动在内存储器的内核Tftpboot通过t ...

  4. python 程序中设置环境变量

    python 中调用系统命令有三种方法: 1.os.system('command') ,这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 ...

  5. 关于Lumen / Laravel .env 文件中的环境变量是如何生效的

    .env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量.那么env()是如何加载到这些变量的呢?在Lume ...

  6. 怎样在Ubuntu中设置环境变量

    首先启动终端. 单击屏幕左上角的Ubuntu图标,在弹出的窗口中点击搜索栏,输入"terminal", 稍等片刻,终端就会赫然在目!二话不说,直接点击!     然后打开环境设置文 ...

  7. Linux 管理环境变量的文件分为系统级和用户级别

    Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...

  8. 解析docker中的环境变量使用和常见问题解决

    docker容器中的环境变量 docker可以为容器配置环境变量.配置的途径有两种: 在制作镜像时,通过ENV命令为镜像增加环境变量.在容器启动时使用该环境变量. 在容器启动时候,通过参数配置环境变量 ...

  9. 深入理解Java中配置环境变量

    深入理解Java中配置环境变量 配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所 ...

随机推荐

  1. vsCode 列选择、列选中、选中列、选中多列(转载)

    VSCode列选择快捷键 来源 https://blog.csdn.net/Luyanc/article/details/80502069 VSCode列选择快捷键:Alt+Shift+左键 来一张效 ...

  2. [日常]总结2016年7月入职至2016年7月26号微盘所遇bug

    2016年刚入职后在新浪微盘项目上所遇到的问题: 1.前端接口的程序不同版本问题,版本号在程序路径中区分,比如2.4.2/lib/sdk/api/weipan/Client.php 2.文件夹接口的m ...

  3. 使用xhprof会在nginx下报502 Bad Gateway错误

    使用xhprof会在nginx下报502 Bad Gateway错误 xhprof_enable()xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMO ...

  4. 【Java每日一题】20170321

    20170320问题解析请点击今日问题下方的“[Java每日一题]20170321”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...

  5. JavaScript中的三种弹窗

    ---恢复内容开始--- 1.警告窗口(alert) <script type="text/javascript"> alert("我是警告弹框!" ...

  6. bat文件传递参数

    %*是表示命令行传过来的参数,%1表示第一个参数,%2表示第二个参数,以此类推.如执行C:/>hello.bat hello world, %1取出来就是hello %2取出来就是world h ...

  7. jsp引入本地图片

    jsp引入本地图片 通用解决方法: 在tomcat的server.xml配置文件中,在<host></host>标签中间添上一句 <!-- docBase : 磁盘绝对路 ...

  8. JS中数组重排序方法

    在数组中有两个可以用来直接排序的方法,分别是reverse()和sort().下面通过本文给大家详细介绍,对js数组重排序相关知识感兴趣的朋友一起看看吧 1.数组中已存在两个可直接用来重排序的方法:r ...

  9. LeetCode | HouseCode 算法题

    题目: You are a professional robber planning to rob houses along a street. Each house has a certain am ...

  10. es6 语法 (Generator)

    { // 长轮询 let ajax=function* (){ yield new Promise(function(resolve,reject){ setTimeout(function () { ...