2014-11-06 111 views
2

我在Mac OS X 10.9.4上使用PHP 5.4.24運行Apache 2.2.26。我有幾個虛擬主機在這個系統上運行,並且它們都成功運行。我試圖向其中一個虛擬主機添加環境變量,我不希望它們在.htaccess中,所以我唯一的選擇是將它們添加到httpd-vhosts.conf中。http-vhosts.conf虛擬主機環境變量不起作用

問題是,在我將它們安裝到httpd-vhosts.conf文件(當然,在重新啓動Apache「sudo apachectl restart」)後,環境變量沒有出現。但是,如果我將它們添加到.htaccess(僅用於比較目的),它們顯得很好。我錯過了什麼?

NameVirtualHost *:80 

<VirtualHost *:80> 
    ServerName mysite.local 
    DocumentRoot "/path/to/mysite.com" 
    SetEnv siteid 1234 
    ErrorLog "/var/log/apache2/mysite.local-error_log" 
</VirtualHost> 

我也仔細檢查我的php.ini文件,以確保沒有什麼是望而卻步那裏,唯一相關的線看起來不錯:

variables_order = "GPCSE" 

同樣,僅僅是明確的,我虛擬主機RUN FINE。只是在我的PHP代碼中調用時,環境變量纔會出現。我已經嘗試了這三個命令中的每一個:

echo $_SERVER["siteid"]; 
echo getenv("siteid"); 
echo apache_getenv("siteid"); 

我能做什麼錯?

+1

如果你打算低估這個問題,至少告訴我爲什麼。我非常簡潔地概述了我的問題,並提供了詳細的平臺和版本信息。你怎麼敢。 – David 2014-11-06 04:52:37

+0

我同意,有一個upvote。你爲什麼從默認'variables_order'(EGPCS)更改的原因?僅供參考,這在我的服務器上正常工作。 – Phil 2014-11-06 04:58:18

+0

謝謝@Phil。它之前被設置爲GPCS,因此我只是將E添加到最後,而沒有任何考慮。我現在看到「默認值:'EGPCS'」指令行,並相應地進行了更新。不幸的是,我重新啓動了Apache,並沒有影響我的問題。 – David 2014-11-06 05:02:22

回答

3

這對我來說是一個令人痛苦的追求,但我發現了一個非常簡單卻又晦澀難懂的答案。首先,讓我澄清一下我之前的問題,即我沒有意識到的是,我的Mac運行OS X Server,它有效地改變了Apache在我的系統上運行的方式。

雖這麼說,下面是等價的httpd-vhosts.conf文件PER通過安裝OS X Server應用程序在我的系統上的虛擬主機

/Library/Server/Web/Config/apache2/sites/0000_any_80_mylocalsite.conf 

顯然,「80」是端口定期HTTP請求和「mylocalsite」是我創建的本地虛擬主機(OS X Server應用程序內)的名稱。現在這個文件已經被OS X服務器產生,如下我現在可以編輯:

sudo vi /Library/Server/Web/Config/apache2/sites/0000_any_80_mylocalsite.conf 

從而揭開了配置文件,尋找類似的,幾乎完全像一個正常的httpd-vhosts.conf文件(注意SETENV testid「1234」線這是解決方案,我一直在尋找,而這隻能手動和沒有做過通過OS X Server應用程序).​​..

<VirtualHost *:80> 
    ServerName mysite.local 
    ServerAdmin [email protected] 
    DocumentRoot "/my/local/docroot/path/to/mysite.com" 
    SetEnv testid "1234" 
    DirectoryIndex index.html index.php /wiki/ /xcode/ default.html 
    CustomLog /var/log/apache2/access_log combinedvhost 
    ErrorLog /var/log/apache2/error_log 
    <IfModule mod_ssl.c> 
     SSLEngine Off 
     SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM" 
     SSLProtocol -ALL +SSLv3 +TLSv1 
     SSLProxyEngine On 
     SSLProxyProtocol -ALL +SSLv3 +TLSv1 
    </IfModule> 
    <Directory "/my/local/docroot/path/to/mysite.com"> 
     Options All -Indexes -ExecCGI -Includes +MultiViews 
     AllowOverride All 
     <IfModule mod_dav.c> 
      DAV Off 
     </IfModule> 
     <IfDefine !WEBSERVICE_ON> 
      Deny from all 
      ErrorDocument 403 /customerror/websitesoff403.html 
     </IfDefine> 
    </Directory> 
</VirtualHost> 

請,我希望這可以幫助別人還有一天。我花了太多的時間尋找這個解決方案,只是用暴力手段絆倒它,我想知道這有希望能夠節省一些人搜索自己的時間。