为什么有些PHP安装有$ _SERVER ['SCRIPT_URI']而有些没有?

时间:2011-12-06 10:29:42

标签: php apache2

我运行两台Apache 2服务器。一个有PHP5.2,另一个有PHP5.3。有没有理由在5.3机器上有$_SERVER['SCRIPT_URI']

这个变量来自哪里?显然,这是从Apache环境中传来的,而PHP手册中没有记录。然而,它是['HTTPS']['SERVER_NAME']['REQUEST_URI']组合的便捷捷径。

我尝试查看配置文件,搜索SO和网络。

3 个答案:

答案 0 :(得分:8)

根据post on WebHostingTalk来自mod_rewrite:

  

添加

     

RewriteEngine On

     

到httpd.conf文件中要转为此的虚拟主机   on for然后重启apache。

答案 1 :(得分:3)

我使用Plesk12,PHP 5.6.6移动到CentOS 7并重写等。 SCRIPT_URI没有去过那里。 因为在某些情况下使用它是如此的好,我写了这个解决方法:

if(!isset($_SERVER['SCRIPT_URI'])){
    $_SERVER['SCRIPT_URI'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

    $pos = strrpos($_SERVER['SCRIPT_URI'],'/');
    if($pos!==false) {
        $_SERVER['SCRIPT_URI'] = substr($_SERVER['SCRIPT_URI'], 0, $pos+1);
    }
}

由于我不是专家,请在插入之前将此代码查看到您的特定应用程序。在我的系统上,它似乎完美无缺。我只是把它放在我的index.php和其他人的头区。

答案 2 :(得分:0)

据我所知$_SERVER['SCRIPT_URI']仅在您将PHP作为CGI运行时才可用。我想这两个PHP安装必须存在差异。