2014-06-26 170 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),非常可靠,有些取決於您的配置根據配置,這可能是可靠的。