PHP增加$_ENV变量
生活随笔
收集整理的這篇文章主要介紹了
PHP增加$_ENV变量
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
[前言]: 在日常開發(fā)過程中,我們常常會(huì)將一些系統(tǒng)或模塊配寫在配置文件里。這樣便于程序維護(hù)與修改。通常的配置文件有.ini , .xml等。配置文件的好處在于: 1,便于管理。 2,可讀性高。 但是,使用配置文件也會(huì)有壞外,即: 1,安全性差。如果采用加密方法,會(huì)帶來解密性能上的開銷。
2,多服務(wù)器布署時(shí),容易造成文件內(nèi)容差異,從而影響程序正常運(yùn)行。 為了解決以上安全問題,通常的做法是將內(nèi)容設(shè)置在系統(tǒng)中,使用環(huán)境變量方式進(jìn)行配置。下面我們來講一下如何在LNMP(Linux + Nginx + Mysql + PHP-FPM + PHP )中進(jìn)行環(huán)境變量的配置。
[操作]: 環(huán)境:debian linux os 1,設(shè)置系統(tǒng)環(huán)境變量: #vi /etc/profile 如增加一個(gè)環(huán)境變量: export MY_REDIS_HOST="localhost"
2,修改php-fpm.conf,設(shè)置PHP環(huán)境變量: #vi /etc/php5/fpm/php-fpm.conf 增加: env[MY_REDIS_HOST]=$MY_REDIS_HOST
3,修改php-fpm啟動(dòng)腳本。 因?yàn)槊看我瓜到y(tǒng)變量生效,都必須source /etc/profile,而php-fpm啟動(dòng)時(shí),也需要作此操作。因此,需要修改php-fpm啟動(dòng)腳本。 如使用apt-get安裝的,則: #vi /etc/init.d/php-fpm 在PATH等環(huán)境變量定義之后,加入一行: . /etc/profile 注意,點(diǎn)號(hào)與路徑之間有空格。實(shí)際上.與source是一樣的,但是這里用source會(huì)報(bào)錯(cuò) 還要修改/etc/profile的權(quán)限,因?yàn)閜hp-fpm啟動(dòng)用戶是www-data , 而/etc/profile的權(quán)限用戶為root,這里為了簡(jiǎn)章,將/etc/profile的權(quán)限設(shè)為“777”,即: #chmod 777 /etc/profile
4,修改php.ini配置。 因?yàn)閜hp.ini默認(rèn)不載入$_ENV變量定義,如果此時(shí)查看phpinfo(),會(huì)發(fā)現(xiàn)我們?cè)O(shè)置的環(huán)境變量為"no value"。 #vi /etc/php5/fpm/php.ini 修改:variables_order為: variables_order="EGPCS"
5,重啟php-fpm #service php5-fpm restart
6,測(cè)試設(shè)置結(jié)果。 查看phpinfo(),在"Enviroment variables" 一節(jié)與“PHP variables”一節(jié)內(nèi)可能看到我們剛才設(shè)置的變量名及變量值。
[補(bǔ)充]: 1,php web可以正常得到$_ENV的變量, php-cli模式取不到$_ENV。即: php -r 'print_r($_ENV);' 得到結(jié)果:array() 這是因?yàn)閜hp cli用的是另外一個(gè)php.ini,其variables_order沒有打開ENV變量。其使用的是:/etc/php5/cli/php.ini,按[4]說明打開即可。 碰到這個(gè)問題,可以使用指定加載配置文件(.ini)來測(cè)試是否是php.ini引起的。即: php -c '/etc/php5/fpm/php.ini' -r 'print_r($_ENV)'
2,多服務(wù)器布署時(shí),容易造成文件內(nèi)容差異,從而影響程序正常運(yùn)行。 為了解決以上安全問題,通常的做法是將內(nèi)容設(shè)置在系統(tǒng)中,使用環(huán)境變量方式進(jìn)行配置。下面我們來講一下如何在LNMP(Linux + Nginx + Mysql + PHP-FPM + PHP )中進(jìn)行環(huán)境變量的配置。
[操作]: 環(huán)境:debian linux os 1,設(shè)置系統(tǒng)環(huán)境變量: #vi /etc/profile 如增加一個(gè)環(huán)境變量: export MY_REDIS_HOST="localhost"
2,修改php-fpm.conf,設(shè)置PHP環(huán)境變量: #vi /etc/php5/fpm/php-fpm.conf 增加: env[MY_REDIS_HOST]=$MY_REDIS_HOST
3,修改php-fpm啟動(dòng)腳本。 因?yàn)槊看我瓜到y(tǒng)變量生效,都必須source /etc/profile,而php-fpm啟動(dòng)時(shí),也需要作此操作。因此,需要修改php-fpm啟動(dòng)腳本。 如使用apt-get安裝的,則: #vi /etc/init.d/php-fpm 在PATH等環(huán)境變量定義之后,加入一行: . /etc/profile 注意,點(diǎn)號(hào)與路徑之間有空格。實(shí)際上.與source是一樣的,但是這里用source會(huì)報(bào)錯(cuò) 還要修改/etc/profile的權(quán)限,因?yàn)閜hp-fpm啟動(dòng)用戶是www-data , 而/etc/profile的權(quán)限用戶為root,這里為了簡(jiǎn)章,將/etc/profile的權(quán)限設(shè)為“777”,即: #chmod 777 /etc/profile
4,修改php.ini配置。 因?yàn)閜hp.ini默認(rèn)不載入$_ENV變量定義,如果此時(shí)查看phpinfo(),會(huì)發(fā)現(xiàn)我們?cè)O(shè)置的環(huán)境變量為"no value"。 #vi /etc/php5/fpm/php.ini 修改:variables_order為: variables_order="EGPCS"
5,重啟php-fpm #service php5-fpm restart
6,測(cè)試設(shè)置結(jié)果。 查看phpinfo(),在"Enviroment variables" 一節(jié)與“PHP variables”一節(jié)內(nèi)可能看到我們剛才設(shè)置的變量名及變量值。
[補(bǔ)充]: 1,php web可以正常得到$_ENV的變量, php-cli模式取不到$_ENV。即: php -r 'print_r($_ENV);' 得到結(jié)果:array() 這是因?yàn)閜hp cli用的是另外一個(gè)php.ini,其variables_order沒有打開ENV變量。其使用的是:/etc/php5/cli/php.ini,按[4]說明打開即可。 碰到這個(gè)問題,可以使用指定加載配置文件(.ini)來測(cè)試是否是php.ini引起的。即: php -c '/etc/php5/fpm/php.ini' -r 'print_r($_ENV)'
來源:http://blog.163.com/sujoe_2006/blog/static/335315120137160515350/
總結(jié)
以上是生活随笔為你收集整理的PHP增加$_ENV变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 垂直平分线(说一说垂直平分线的简介)
- 下一篇: 陈勋奇(说一说陈勋奇的简介)