PHP增加$_ENV变量
生活随笔
收集整理的這篇文章主要介紹了
PHP增加$_ENV变量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[前言]: 在日常開發過程中,我們常常會將一些系統或模塊配寫在配置文件里。這樣便于程序維護與修改。通常的配置文件有.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)'
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变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 垂直平分线(说一说垂直平分线的简介)
- 下一篇: 动态规划算法php,php算法学习之动态