Server变量中的本地主机和端口号

时间:2012-03-16 02:34:35

标签: php

我有以下代码片段,我被困在如何弄清楚获取端口号,以便结果可能按预期“转向”正确。

$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'条件。请帮助....

3 个答案:

答案 0 :(得分:2)

我相信您要找的是$_SERVER['SERVER_NAME']$_SERVER['SERVER_PORT']的组合,默认为端口80。

试试这个:

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

来源:http://www.php.net/manual/en/reserved.variables.server.php

答案 1 :(得分:2)

我正在使用$_SERVER['HTTP_HOST'],它为我提供了server-name :: port-number。文档说这是“主机的内容:来自当前请求的标头,如果有的话”。

我的运行时环境是在Linux和PHP 5.4上运行的apache,这一直都有效。

答案 2 :(得分:1)

$_SERVER['SERVER_NAME']只会返回服务器的名称。

如果您在浏览器中输入http://localhost:8282

您将获得'localhost'作为$_SERVER['SERVER_NAME']的值。

如果要获取请求端口,则需要使用$_SERVER['SERVER_PORT']。如果你把它们组合起来就像这样:

$server = $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];       
然后你会得到更接近你想要的东西。

我建议您查看$ _SERVER manual了解所有细节。