系统环境变量、NGINX和PHP之间的环境变量传递 发布日期:2017-03-09 18:23:33     博主推荐★

有没有遇到过多种环境下服务器参数配置切换的问题?很多时候需要修改或者忘记修改,这种靠着人工修改的方式是不是让你头疼已久了呢?你想要怎么解决这种问题呢?是不是还是靠着人工修改,记录笔记的原始方式呢?那么接下来就说说php开发种有哪些方式可以解决这种头疼的问题。

1、通过nginx的fastcgi_param来设置
在nginx配置文件中,可以在nginx总体的配置文件nginx.conf中,也可以在单独的网站配置环境中进行设置,如:www.test.com
在配置环境server段location中添加相应的配置信息:

location ~ .*\.(php|php5)?$
{
 try_files $uri =404;
 fastcgi_pass  unix:/tmp/php-cgi.sock;
 fastcgi_index index.php;
 include fcgi.conf;
 fastcgi_param DB_NAME 'www.test.com';
}

这里只添加了 fastcgi_param DB_NAME 'www.test.com';  一个值。
添加后重启nginx;


2、通过php主配置文件php-fpm.conf来设置
这个设置必须放在主配置文件php-fpm.conf里,不能放到include指令设置的子配置文件里,否则会报错:「Array are not allowed in the global section」
直接在配置文件中添加:

env[DATABASE_HOST] = 192.168.0.1
env[DATABASE_USERNAME] = administrator
env[DATABASE_PASSWORD] = e1bfd762321e409cee4ac0b6e841963c

添加后重启php-fpm
通过上面2种方式添加$_SERVER变量值后,我们就可以直接在php文件中通过$_SERVER来获取相应的变量值了。
不过据说配置信息通过nginx的fastcgi_param来设置的话,当nginx和php交互时,会带来大量的数据传输。

############################################################################################

Nginx与PHP变量传递fastcgi_params

Nginx配置Fastcgi解析PHP时会调用fastcgi_params配置文件来传递服务器变量,默认内容如下:

#参数设定       #传递为PHP变量名    #Nginx自有变量,可自定义

fastcgi_param      QUERY_STRING       $query_string;

fastcgi_param      REQUEST_METHOD     $request_method;

fastcgi_param      CONTENT_TYPE       $content_type;

fastcgi_param      CONTENT_LENGTH     $content_length;

可以修改配置文件设定自定义变量传递到php-cgi端:

fastcgi_param  haiyun  "Hello haiun";

新建php文件通过$_SERVER[""]变量测试:

<?
  echo $_SERVER["haiyun"];
?>

curl www.haiyun.me/test.php

Hello haiyun

但是,但是,但是不推荐使用这种方式传递变量,会增加连接开销,可修改PHP-FPM配置文件传递变量:

env[haiyun] = test


3、另外个人认为最好的方式就是修改系统环境变量,原因是系统的环境变量修改和替换不需要重启php-fpm只要执行source /etc/profile就可以立马生效,编辑方式如下:

vim /etc/profile  最后一行加上

export XXX_ENV="develop"


博文地址:https://blog.ahamu.cn/blog/detail.html?id=126
   
推荐文章
  • 1
    sysbench
    2020/07/08
  • 2
    phper转java记录篇-spring boot
    2020/06/10
  • 3
    thinkphp5.0使用路由之后,post请求的
    2020/05/19
  • 4
    springboot单元测试aop失效
    2020/05/15
  • 5
    脑海中的JVM
    2020/05/12
  • 6
    IDEA搜索插件时显示search results
    2020/05/12
  • 7
    spring boot 配置加载源码查找
    2020/04/20
  • 8
    通过javap命令分析java汇编指令
    2020/04/16
  • 9
    IDEA小知识:查看JVM内存使用情况的步骤
    2020/04/16
  • 10
    springboot-加载自定义的properti
    2020/04/14
  • 11
    Jenkins执行shell脚本无法启动子进程解决
    2020/04/03
  • 12
    mac idea激活找专业的
    2020/04/02
  • 13
    Jenkins + DockerSwarm 实现弹
    2020/03/31
  • 14
    mac swarm学习过程
    2020/03/31
  • 15
    spring cloud
    2020/03/18
  • 16
    JAVA开发中遇到的问题记录002
    2020/03/12
  • 17
    JAVA开发中遇到的问题记录001
    2020/03/07
  • 18
    php -i查看信息
    2020/02/23
  • 19
    phpStorm中使用xdebug工具调试dock
    2019/12/09
  • 20
    讲的比较好的B+树执行原理的文章
    2019/12/09
最喜标签
NYOJ 面试 AJAX ping CentOS 灰度算法 YII2