2014-06-26 168 views
8

在我的本地环境中(Apache 2.2.26上的PHP 5.4.24)$_SERVER["SCRIPT_URL"]存在,但我读到这个变量并不总是存在,即使我找不到它到底是什么时候,什么时候没有。

我想知道什么是需要这个变量可靠地存在。

回答

5

当你启用了mod_rewrite这是唯一可供选择:

http://httpd.apache.org/docs/2.0/rewrite/rewrite_intro.html#EnvVar

+0

不,他们在那里,即使没有mod_rewrite,甚至在那里,当你不使用Apache。不是每个人都使用Apache! – DanFromGermany

+0

@DanFromGermany好吧,OP使用的是Apache :) –

+2

当然你可以用其他软件模拟这个领域,但是mod_rewrite是最初的源代码。我假设的问题是,如果代码使用该字段,代码将停止工作的情况是什么。 –

3

该变量在很大程度上依赖于服务器的配置。

当使用带的php5-FPM(FCGI)例如nginx的,你会传递变量作为fpm_parameter:

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 

没有为SCGI一个类似的结构。

$_SERVER有3种类型的全局变量,其中一些取自客户端的请求头并且不可靠,有些由PHP/Webserver设置(例如REMOTE_ADDR),非常可靠,有些取决于您的配置根据配置,这可能是可靠的。