2012-03-16 85 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,并且这一直运行。

相关问题