$ _SERVER [“SCRIPT_URI”]无效?替代?

时间:2009-04-04 21:44:33

标签: php

这很奇怪,但由于某种原因,$_SERVER["SCRIPT_URI"]在我处于子/子页面时不会返回域名,但只能在主页面上工作。不确定它是由于脚本(WordPress)还是主机,但请您建议使用PHP检索域名的任何可靠解决方案吗?

11 个答案:

答案 0 :(得分:22)

如果您需要域名,请使用:

$_SERVER['HTTP_HOST']

答案 1 :(得分:20)

如有疑问

var_dump($_SERVER);

答案 2 :(得分:6)

根据您的需要,我会使用以下其中一项:

  1. $ _ SERVER ['PHP_SELF']用于脚本文件位置
  2. $ _ SERVER ['SERVER_NAME']作为主机名
  3. From the php docs

    编辑:也许PHP_SELF不是最好的。见评论。

答案 3 :(得分:4)

这可能是由于URL重写,如果你想要在网址中调用的路径,你可以试试$ _SERVER ['REQUEST_URI']。

答案 4 :(得分:1)

SCRIPT_URI不喜欢,因为当您的站点使用根域运行时,它没有任何价值。它仅在使用子目录时出现。

HTTP_HOST在处理子目录时不是一个好主意 使用以下代码获取SCRIPT_URI

$SCRIPT_URI = $_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST'].'/'.ltrim(dirname($_SERVER['SCRIPT_URL']),'/');

答案 5 :(得分:0)

var_dump($_SERVER)并了解您的需求。

P.S。使用未经过审核的$_SERVER["PHP_SELF"]可以是security risk

答案 6 :(得分:0)

此外,SCRIPT_URI不存在,正确的语法是REQUEST_URI:

echo $_SERVER["REQUEST_URI"];它返回没有主机和域的整个路径。

答案 7 :(得分:0)

我在我的网站上使用$ _SERVER [SCRIPT_URI] http://www.a2zidx.com 和许多子目录一样 http://howto.a2zidx.com

多年来我一直没有遇到任何问题,今天在许多未分配$ _SERVER [SCRIPT_URI]的网站上出现错误。在联系我的isp后,他们声称他们没有做任何更改,但$ _SERVER [SCRIPT_URI]不再有效。 getenv('SCRIPT_URI')不会失败但返回空字符串。为什么这会在这么多年后突然发生我不知道。我最后调用一个函数来通过各种选项来提取我想要的文件名。希望这涵盖了一切。我在包含该功能时遇到了麻烦,但检查过 “SCRIPT_NAME” “PHP_SELF” “SCRIPT_FILENAME “SCRIPT_URI”

希望他的帮助。

如果有人知道为什么SCRIPT_URI会突然停止工作,我很想知道。服务器当前正在运行Apache 2.4。

答案 8 :(得分:0)

迟到的回复。我使用这段脚本在我的数据库中存储信息。希望这可以帮助某人。如何获取您的完整URL和客户端访问的IP地址。

if (!empty($_SERVER['HTTP_CLIENT_IP'])){
  $ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
  $ip=$_SERVER['REMOTE_ADDR'];
}

$url = $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];

echo $ip;
echo "<br>";
echo $url;

答案 9 :(得分:0)

在Apache上,SCRIPT_URI仅在启用mod_rewrite时存在。

Apache要求:

  

rewrite_module(注意:使用平台特定的加载语法)

  

RewriteEngine开启

Apache配置文件中相应位置的声明。

然后重新启动Apache,它应该可以正常工作。

答案 10 :(得分:-3)

如果您的浏览器很好地格式化JSON文档并且没有输出,那么插入以下内容会比var_dump更具可读性:

header('Content-Type: application/json');die(json_encode($_SERVER));

phpinfo()还会提供所有$_SERVER值的列表等等!