首頁 >後端開發 >php教程 >Apache/Nginx為PHP設定、新增$_SERVER伺服器環境變數

Apache/Nginx為PHP設定、新增$_SERVER伺服器環境變數

WBOY
WBOY原創
2016-07-29 08:58:081558瀏覽

需求

<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教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn