$_SERVER[“SCRIPT_URL”]: when is it reliably presen

2020-08-21 01:46发布

问题:

In my local environment (PHP 5.4.24 on Apache 2.2.26) $_SERVER["SCRIPT_URL"] is present, but I read around that this variable is not always present, even though I couldn't find exactly when it is and when it isn't.

I'd like to know what is required for this variable to be reliably present.

回答1:

It's only available when you have mod_rewrite enabled:

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



回答2:

This variable strongly depends on the server's configuration.

When using nginx with php5-fpm (fcgi) for example, you'd pass the variable as fpm_parameter:

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

There is a similiar configuration for scgi.

There are 3 types of global variables in $_SERVER, some are taken from the client's request header and are not reliable, some are set by PHP/Webserver (for example REMOTE_ADDR) and are very reliable, and some depend on your configuration which can be reliable depending on that configuration.