2014-06-26 12 views
8

In meiner lokalen Umgebung (PHP 5.4.24 auf Apache 2.2.26) ist $_SERVER["SCRIPT_URL"] vorhanden, aber ich habe gelesen, dass diese Variable nicht immer vorhanden ist, obwohl ich nicht genau finden konnte, wann es ist und wann nicht .

Ich würde gerne wissen, was benötigt wird, damit diese Variable zuverlässig vorhanden ist.

Antwort

5

Es ist nur verfügbar, wenn Sie mod_rewrite aktiviert haben:

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

+0

Nein, sie sind da auch ohne mod_rewrite, die sind auch da wenn du keinen Apache verwendest. Nicht jeder benutzt Apache! – DanFromGermany

+0

@DanFromGermany Nun, OP verwendet Apache :) –

+2

Natürlich können Sie das Feld mit anderer Software simulieren, aber mod_rewrite ist die ursprüngliche Quelle. Ich nehme an, die Frage ist, wenn der Code das Feld verwendet, was wäre ein Fall, in dem der Code nicht mehr funktionieren würde. –

3

Diese Variable hängt stark von der Konfiguration des Servers.

Wenn mit php5-fpm (fcgi) zum Beispiel unter Verwendung von nginx, dann würden Sie die Variable als fpm_parameter passieren:

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 

Es gibt eine similiar Konfiguration für scgi ist.

Es gibt 3 Arten von globalen Variablen in $_SERVER, sind einige von der Client-Request-Header genommen und sind nicht zuverlässig, einige von PHP/Webserver festgelegt werden (zB REMOTE_ADDR) und sind sehr zuverlässig, und einige sind abhängig von der Konfiguration Das kann abhängig von dieser Konfiguration zuverlässig sein.