2011-06-23 62 views
0

我有這樣的代碼在這裏:如何區分環境是否是虛擬主機?

$config['SUBFOLDER'] = '/'; 
$config['APP_URL'] = 'http://'.$_SERVER['HTTP_HOST'].$config['SUBFOLDER']; 

而且APP_URL在整個HTML模板中使用。問題是 - 配置需要儘可能通用,因此切換環境時可以做的更少。

現在,當我爲我的項目配置了一個虛擬主機,但當它不是虛擬主機,而是一個localhost/myproject/- $ config ['SUBFOLDER']必須手動設置到/ myproject/

如何以編程方式執行此操作?

回答

0

你可以在你的htaccess文件中設置一個變量。

#.htccess 
SetEnv APPLICATION_ENV development 

然後在你的網站做了檢查此:

<?php 
//live 
$config['SUBFOLDER'] = '/'; 
//on localhost - override live settings 
if(APPLICATION_ENV === 'development') 
{ 
    $config['SUBFOLDER'] = '/myproject'; 
} 

通過這種方法,你只需要改變一個變量在htaccess文件。

如果你只是要檢查,如果你是在本地主機上運行,​​在$_SERVER['HTTP_HOST']做的檢查也將工作:

<?php 
if($_SERVER['HTTP_HOST'] === 'localhost') 
{ 
    $config['SUBFOLDER'] = '/myproject'; 
} 
+0

我試圖檢查如果HTTP_HOST是localhost,但是如何在本地主機之後獲取值,即/ myproject /,以編程方式?我嘗試使用$ _SERVER ['REQUEST_URI']但只適用於索引頁面。 – donkapone

+0

如果您正在瀏覽http://localhost/myproject/some-page.html,那麼'echo $ _SERVER ['REQUEST_URI'];'應顯示/myproject/some-page.html。試試'$ parts = explode('/',$ _ SERVER ['REQUEST_URI']); echo $ parts [1];'。你應該得到'我的項目'。 –

+0

那個人做了詭計 - 謝謝! – donkapone

0

檢查該URL是否包含LOCALHOST或一個正常的域名,並將您的配置上傳到條件依賴於的URL。

0

我採取略有不同的方法..

if ($_SERVER['HTTP_HOST'] == 'testingserver') // local environment here 
{ 
    // local settings 
} 
else if (// remote environment here 
    $_SERVER['HTTP_HOST'] == 'www.something.com' || 
    $_SERVER['HTTP_HOST'] == 'something.com' 
) 
{ 
    // remote settings 
} 
else // error.. this shouldn't happen 
{ 
    echo $_SERVER['HTTP_HOST']; 
} 
相關問題