Is there a way in PHP to get the hostname and document root from the server? I'd like to do this without storing them as variables in your php code. I am reluctant to use $_SERVER because I have heard it is not reliable and subject to attack. How can this be done on a virtual host? Does a reliable and safe method exist?开发者_高级运维
You could try
$docroot = getenv("DOCUMENT_ROOT");
getenv
lets you access environment variables. You can see all variables that are available by printing phpinfo
. Maybe apache_getenv
also helps.
$_SERVER['DOCUMENT_ROOT']
is reliable but $_SERVER['SERVER_NAME']
isn’t (see Chris Shiflett’s SERVER_NAME Versus HTTP_HOST). Only if Apache’s UseCanonicalName
is enabled the canonical name is shown.
Like you mentioned, you have access to : http://php.net/manual/en/reserved.variables.php There's a breakdown here of using realpath() and $_SERVER to get the doc root: http://www.helicron.net/php/
Also, you could exec('hostname') or something similar to get the hostname.
精彩评论