為PHP設定伺服器(Apache/Nginx)環境變數

閆肅的部落格發表於2015-03-03

設定環境變數常見的地方為區分開發環境/生產環境,或者定義一些資料庫的帳號密碼

設定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'];

相關文章