2014-06-26 18 views
8

Nel mio ambiente locale (PHP 5.4.24 su Apache 2.2.26) è presente $_SERVER["SCRIPT_URL"], ma ho letto che questa variabile non è sempre presente, anche se non riesco a trovare esattamente quando è e quando non è .

Mi piacerebbe sapere cosa è necessario perché questa variabile sia attendibilmente presente.

risposta

5

E 'disponibile solo se si dispone di mod_rewrite abilitato:

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

+0

No, ci sono anche senza mod_rewrite, ci sono anche quando non si usa Apache. Non tutti usano Apache! – DanFromGermany

+0

@DanFromGermany Bene, OP sta utilizzando Apache :) –

+2

Ovviamente è possibile simulare il campo con altri software, ma mod_rewrite è la fonte originale. Presumo che la domanda è, se il codice utilizza il campo, quale sarebbe un caso in cui il codice smetterebbe di funzionare. –

3

Questa variabile dipende fortemente dalla configurazione del server.

Quando si utilizza nginx con PHP5-FPM (fcgi), ad esempio, ci si passa la variabile come fpm_parameter:

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 

C'è una configurazione simile per SCGI.

Ci sono 3 tipi di variabili globali in $_SERVER, alcuni sono presi dal intestazione di richiesta del cliente e non sono affidabili, alcuni sono impostate dal PHP/Webserver (ad esempio REMOTE_ADDR) e sono molto affidabili, e alcuni dipendono dalla configurazione che può essere affidabile a seconda di quella configurazione.

Problemi correlati