需求
<code>在PHP开发中为了区分线上生产环境还是本地开发环境, 如果我们能通过判断$_SERVER['RUNTIME_ENVIROMENT']为 'DEV'还是'PRO'来区分该多好, 可惜的是$_SERVER数组里面根本没有RUNTIME_ENVIROMENT这个元素。 </code>
一、透過nginx的fastcgi_param來設定
在nginx設定檔中,可以在nginx總體的設定檔nginx.conf中,也可以在單獨的網站設定環境中設定檔,如:www.tomener .com.conf
在設定環境server段location中加入對應的設定資訊:
<code>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 }</code>
這裡只加入了fastcgi_param RUNTIME_ENVIROMENT 'PRO'一個值,更多可以加在後面
然後重新啟動、透過php主設定檔php-fpm.conf來設定
這個設定必須放在主設定檔php-fpm.conf裡,不能放到include指令設定的子設定檔裡,否則會報錯:「Array are not allowed in the global section”
我的php-fpm.conf位置在/usr/local/php/etc/php-fpm.conf
直接在設定檔中加入:
<code>nginx -s reload</code>
新增後重啟php-fpm
<code>env[RUNTIME_ENVIROMENT] = 'PRO' </code>
透過上面2種方式加入$_SERVER變數值後,我們就可以直接在php檔案中透過$_SERVER來取得對應的變數值了。
不過據說配置資訊透過nginx的fastcgi_param來設定的話,當nginx和php互動時,會帶來大量的資料傳輸。
Apache設定環境變數
<code>service restart php-fpm</code>
<code>SetEnv 变量名 变量值</code>參考文件:
<code><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></code>以上就介紹了Apache/Nginx為PHP設定、添加$_SERVER伺服器環境變量,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。