我运行两台Apache 2服务器。一个有PHP5.2,另一个有PHP5.3。有没有理由在5.3机器上有$_SERVER['SCRIPT_URI']
?
这个变量来自哪里?显然,这是从Apache环境中传来的,而PHP手册中没有记录。然而,它是['HTTPS']
,['SERVER_NAME']
和['REQUEST_URI']
组合的便捷捷径。
我尝试查看配置文件,搜索SO和网络。
答案 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安装必须存在差异。