設定環境變數常見的地方為區分開發環境/生產環境,或者定義一些資料庫的帳號密碼
設定Apache環境變數
指令
設定當前環境變數為DEV
SetEnv RUNTIME_ENVIROMENT DEV
資料庫帳號密碼
SetEnv MYSQL_USERNAME root
SetEnv MYSQL_PASSWORD root
設定檔格式
<VirtualHost *:80>
ServerAdmin admin@admin.com
DocumentRoot "/var/www/"
ServerName localhost
SetEnv RUNTIME_ENVIROMENT DEV
SetEnv MYSQL_USERNAME root
SetEnv MYSQL_PASSWORD root
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
</VirtualHost>
設定Nginx環境變數
指令
設定當前環境變數為DEV
fastcgi_param RUNTIME_ENVIROMENT 'DEV'
資料庫帳號密碼
fastcgi_param MYSQL_USERNAME 'root'
fastcgi_param MYSQL_PASSWORD 'root'
設定檔格式
在fastcgi_params檔案中配置
fastcgi_param RUNTIME_ENVIROMENT 'DEV';
fastcgi_param MYSQL_USERNAME 'root';
fastcgi_param MYSQL_PASSWORD 'root';
在nginx.conf中配置
server { listen 80; root /var/www; index index.php; server_name localhost; location / { index index.php; } location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } }
為PHP指令碼設定環境變數
為目前使用者臨時設定
臨時設定只需要執行
export KEY=VALUE
為目前使用者永久設定
在~/.bashrc(不同系統各有不同)中寫
為所有使用者(不包括root)設定
建立檔案/etc/profile.d/test.sh,寫入
KEY=VALUE
為所有使用者(包括root)設定
在/etc/environment中寫入
KEY=VALUE
注意,這個檔案的生效時間是使用者登入時,所以對於root來說,需要重啟機器
在Supervisor中設定
有的時候PHP指令碼是用Supervisor來控制的,所以記得設定supervisor配置中的environment項
在PHP中調用伺服器環境變數
在PHP中有兩個調用方式:
$env = getenv('RUNTIME_ENVIROMENT');
還有超全域變數方式:
$env = $_SERVER['RUNTIME_ENVIROMENT'];