在PHP開發中爲了區分線上生產環境仍是本地開發環境,
若是咱們能經過判斷$_SERVER['RUNTIME_ENVIROMENT']爲 'DEV'仍是'PRO'來區分該多好, 惋惜的是$_SERVER數組裏面根本沒有RUNTIME_ENVIROMENT這個元素。
在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
這個設置必須放在主配置文件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交互時,會帶來大量的數據傳輸。網站
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