2012-03-16 54 views
0

我有下面的代碼片斷,我被困在如何弄清楚獲取端口號,以便結果可能「變」出正確的預期。服務器變量中的本地主機和端口號

$server_list = array(  
     "localhost:8282" => array("test" => FALSE, "site_id" => "flyToHeaven"), 
); 

$server_name = $_SERVER["SERVER_NAME"]; 
if (!isset($server_list[$server_name])) { 
    $server_name = "unknown"; 
    print "unknown server name!!"; 
    exit(); 

我會一直在輸出得到「未知服務器名稱」。如果我在localhost後刪除端口號,那麼錯誤是不同的,這意味着它通過了這個'if'條件。任何幫助,請....

+0

嘗試回顯'$ _SERVER ['SERVER_NAME']'以查看它包含的內容... – Jon 2012-03-16 02:39:32

+0

它僅顯示本地主機,並且在那裏爲If執行不匹配比較 – 2012-03-16 02:44:19

回答

1

$_SERVER['SERVER_NAME']將只返回服務器的名稱。

如果你在瀏覽器中鍵入http://localhost:8282

你會得到'localhost'作爲$_SERVER['SERVER_NAME']值。

如果你想獲得請求端口,你想使用$_SERVER['SERVER_PORT']。如果你像這樣結合他們兩個:

$server = $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];  

,那麼你將得到的東西更接近你想要什麼。

我建議你看看$ _SERVER manual的所有細節。

2

我使用的是$_SERVER['HTTP_HOST'],它給了我server-name :: port-number。文檔說這是「當前請求中主機:頭的內容,如果有的話」。

我的運行時環境是在Linux和PHP 5.4上運行的apache,並且這一直運行。

相關問題