我有以下代码片段,我被困在如何弄清楚获取端口号,以便结果可能按预期“转向”正确。
$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 :(得分: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了解所有细节。