Apache/Nginx爲PHP設置、添加$_SERVER服務器環境變量

在PHP開發中爲了區分線上生產環境仍是本地開發環境,
若是咱們能經過判斷$_SERVER['RUNTIME_ENVIROMENT']爲 'DEV'仍是'PRO'來區分該多好, 惋惜的是$_SERVER數組裏面根本沒有RUNTIME_ENVIROMENT這個元素。

1、經過nginx的fastcgi_param來設置

在nginx配置文件中,能夠在nginx整體的配置文件nginx.conf中,也能夠在單獨的網站配置環境中進行設置,如:www.tomener.com.confphp

在配置環境server段location中添加相應的配置信息:html

location ~ \.php($|/) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param RUNTIME_ENVIROMENT 'PRO'; # PRO or DEV }

這裏只添加了fastcgi_param RUNTIME_ENVIROMENT 'PRO'一個值,更多能夠添加在後面nginx

而後重啓重啓nginxweb

nginx -s reload

2、經過php主配置文件php-fpm.conf來設置

這個設置必須放在主配置文件php-fpm.conf裏,不能放到include指令設置的子配置文件裏,不然會報錯:「Array are not allowed in the global section」apache

個人php-fpm.conf位置在/usr/local/php/etc/php-fpm.conf數組

直接在配置文件中添加:bash

env[RUNTIME_ENVIROMENT] = 'PRO' 

添加後重啓php-fpmide

service restart php-fpm

經過上面2種方式添加$_SERVER變量值後,咱們就能夠直接在php文件中經過$_SERVER來獲取相應的變量值了。php-fpm

不過聽說配置信息經過nginx的fastcgi_param來設置的話,當nginx和php交互時,會帶來大量的數據傳輸。網站

Apache設置環境變量

SetEnv 變量名 變量值
 
<VirtualHost *:80> ServerAdmin webmaster@demo.com DocumentRoot "e:\wwwroot\demo" ServerName my.demo.com ErrorLog "logs/my.demo.com-error.log" CustomLog "logs/my.demo.com-access.log" common SetEnv RUNTIME_ENVIROMENT DEV <Directory "e:\wwwroot\demo"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

參考文檔:

http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_env.html#setenv
相關文章
相關標籤/搜索