When running a PHP program under the command line, the $_SERVER["SERVER_NAME"] variable does not contain the hostname. However, the following works for me under Unix/Linux and Windows:
<?php
if (isset($_ENV["HOSTNAME"]))
$MachineName = $_ENV["HOSTNAME"];
else if (isset($_ENV["COMPUTERNAME"]))
$MachineName = $_ENV["COMPUTERNAME"];
else $MachineName = "";
?>
$_ENV
$HTTP_ENV_VARS [deprecated]
(PHP 4 >= 4.1.0, PHP 5)
$_ENV -- $HTTP_ENV_VARS [deprecated] — Environment variables
Descrierea
An associative array of variables passed to the current script via the environment method.
These variables are imported into PHP's global namespace from the environment under which the PHP parser is running. Many are provided by the shell under which PHP is running and different systems are likely running different kinds of shells, a definitive list is impossible. Please see your shell's documentation for a list of defined environment variables.
Other environment variables include the CGI variables, placed there regardless of whether PHP is running as a server module or CGI processor.
$HTTP_ENV_VARS contains the same initial information, but is not a superglobal. (Note that $HTTP_ENV_VARS and $_ENV are different variables and that PHP handles them as such)
Istoria schimbărilor
| Versiunea | Descriere |
|---|---|
| 4.1.0 | Introduced $_ENV that deprecated $HTTP_ENV_VARS. |
Exemple
Example #1 $_ENV example
<?php
echo 'My username is ' .$_ENV["USER"] . '!';
?>
Assuming "bjori" executes this script
Exemplul de mai sus va afișa ceva similar cu:
My username is bjori!
Note
Notă:
Aceasta este o variabilă 'superglobală', sau globală automată. Aceasta pur și simplu înseamnă că ea este disponibilă în toate circumstanțele pe parcursul script-ului. Nu este nevoie de a scrie global $variable; pentru a o accesa din funcții sau metode.
If your $_ENV array is mysteriously empty, but you still see the variables when calling getenv() or in your phpinfo(), check your http://us.php.net/manual/en/ini.core.php#ini.variables-order ini setting to ensure it includes "E" in the string.
If you wish to define an environment variable in your Apache vhost file, use the directive SetEnv.
SetEnv varname "variable value"
It is important to note that this new variable will appear in $_SERVER, not $_ENV.
Comments for this page seem to indicate getenv() returns environment variables in all cases.
For getenv() to work, php.ini variables_order must contain 'E'.
