[前言]:

在日常开发过程中,我们常常会将一些系统或模块配写在配置文件里。这样便于程序维护与修改。通常的配置文件有.ini , .xml等。配置文件的好处在于:

1,便于管理。
2,可读性高。
但是,使用配置文件也会有坏外,即:
1,安全性差。如果采用加密方法,会带来解密性能上的开销。
2,多服务器布署时,容易造成文件内容差异,从而影响程序正常运行。
为了解决以上安全问题,通常的做法是将内容设置在系统中,使用环境变量方式进行配置。下面我们来讲一下如何在LNMP(Linux + Nginx + Mysql + PHP-FPM + PHP )中进行环境变量的配置。
[操作]:
环境:debian linux os
1,设置系统环境变量:
#vi /etc/profile
如增加一个环境变量:
export MY_REDIS_HOST="localhost"
2,修改php-fpm.conf,设置PHP环境变量:
#vi /etc/php5/fpm/php-fpm.conf
增加:
env[MY_REDIS_HOST]=$MY_REDIS_HOST
3,修改php-fpm启动脚本。
因为每次要使系统变量生效,都必须source /etc/profile,而php-fpm启动时,也需要作此操作。因此,需要修改php-fpm启动脚本。
如使用apt-get安装的,则:
#vi /etc/init.d/php-fpm
在PATH等环境变量定义之后,加入一行:
. /etc/profile
注意,点号与路径之间有空格。实际上.与source是一样的,但是这里用source会报错
还要修改/etc/profile的权限,因为php-fpm启动用户是www-data , 而/etc/profile的权限用户为root,这里为了简章,将/etc/profile的权限设为“777”,即:
#chmod 777 /etc/profile
4,修改php.ini配置。
因为php.ini默认不载入$_ENV变量定义,如果此时查看phpinfo(),会发现我们设置的环境变量为"no value"。
#vi /etc/php5/fpm/php.ini
修改:variables_order为:
variables_order="EGPCS"
5,重启php-fpm
#service php5-fpm restart
6,测试设置结果。
查看phpinfo(),在"Enviroment variables" 一节与“PHP variables”一节内可能看到我们刚才设置的变量名及变量值。
[补充]:
1,php web可以正常得到$_ENV的变量, php-cli模式取不到$_ENV。即:
php -r 'print_r($_ENV);'
得到结果:array()
这是因为php cli用的是另外一个php.ini,其variables_order没有打开ENV变量。其使用的是:/etc/php5/cli/php.ini,按[4]说明打开即可。
碰到这个问题,可以使用指定加载配置文件(.ini)来测试是否是php.ini引起的。即:
php -c '/etc/php5/fpm/php.ini' -r 'print_r($_ENV)'

来源:http://blog.163.com/sujoe_2006/blog/static/335315120137160515350/

PHP增加$_ENV变量相关推荐

  1. PHP 服务器变量$_SERVER 服务器环境变量 $_ENV

    PHP $_SERVER 变量 $_SERVER 是一个包含诸如头信息(header).路径(path)和脚本位置(script locations)的数组.它是 PHP 中一个超级全局变量,我们可以 ...

  2. Lua中的函数环境、_G及_ENV

    lua5.1中的全局环境变量 Lua将环境table保存在一个全局变量_G中,可以对其访问和设置.一般我们把需要被访问的对象和函数等放到这里, 然后我们可以在需要时通过它来访问和使用. 可以通过val ...

  3. put请求方式参数如何传_TP5请求(request)变量

    可以通过Request对象完成全局输入变量的检测.获取和安全过滤,支持包括$_GET.$_POST.$_REQUEST.$_SERVER.$_SESSION.$_COOKIE.$_ENV等系统变量,以 ...

  4. php thinkphp修改,thinkphp5.0 | 输入变量更改变量

    输入变量 可以通过Request对象完成全局输入变量的检测.获取和安全过滤,支持包括$_GET.$_POST.$_REQUEST.$_SERVER.$_SESSION.$_COOKIE.$_ENV等系 ...

  5. 解析php.ini 中文版

    php.ini对应的内容如下: ;;;;;;;;;;;; ;;  语法  ;; ;;;;;;;;;;;; ; 该文件的语法非常简单.空白字符和以分号开始的行被简单地忽略. ; 章节标题(例如: [ph ...

  6. 【转贴】Lua 5.0 参考手册

    作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC ...

  7. php.ini 配置详解

    这个文件必须命名为''php.ini''并放置在httpd.conf中的PHPIniDir指令指定的目录中. 最新版本的php.ini可以在下面两个位置查看: http://cvs.php.net/v ...

  8. [转载]最完整PHP.INI中文版

    [转载]最完整PHP.INI中文版 http://www.21andy.com/blog/20090718/1344.html 最完整PHP.INI中文版 适用于 php-5.2 的 php.ini ...

  9. 深度挖掘 Laravel 生命周期

    本文首发于个人博客 深度挖掘 Laravel 生命周期,转载请注明出处. 这篇文章我们来聊聊 「Laravel 生命周期」 这个主题.虽然网络上已经有很多关于这个主题的探讨,但这个主题依然值得我们去研 ...

最新文章

  1. 奇怪吸引子---Finance
  2. 光伏电站清扫机器人_光伏智能清扫机器人
  3. python爬虫常见报错_Python爬虫常见HTTP响应状态码详解
  4. 1209.1——快速排序算法
  5. html写原生曲线图,HTML5 平滑的正弦波曲线图
  6. 串口之GetCommState、SetCommState函数详解
  7. Error Domain=NSCocoaErrorDomain Code=3840 JSON text did not start with array or object and option
  8. OPTEE之安全存储详解
  9. 批量删除多台linux服务器文件
  10. ADS软件的使用教程
  11. 使用Windows聚焦当壁纸
  12. 一行代码视频下载,so easy!
  13. 7iso 快门 光圈
  14. c语言unit id是什么,小程序再升级之什么是UnitionID
  15. 过去的Tony老师你爱理不理,现在的Tony老师你高攀不起
  16. html左边是菜单右边是内容,左首菜单栏右侧内容
  17. 微信小程序图片懒加载插件
  18. flask html 得到文本框 input的内容_你需要知道的HTML知识
  19. web接入大华摄像头实时视频
  20. 好名字——能看出方法特征的名字才是好名字

热门文章

  1. 有关linux下redis overcommit_memory的问题,以及导致的:Cannot allocate memory问题
  2. 4.有关日期格式属性修改常识,v$nls_parameters,between and,查询指定部门的员工信息,in和null,like模糊查询,order by后面可以跟:列名、表达式、别名、序号
  3. Tomcat虚拟目录
  4. CSS中background-position详述
  5. 涂鸦板练习(20200214)
  6. web项目没有run on server时..
  7. [CS101] 转载:浅议Fibonacci(斐波纳契)数列求解
  8. Linux 文件系统在线扩容实战
  9. 编写测试:VC下获取文件大小的4种方法
  10. Intent打开各种类型的文件