Predefined Variables
PHP provides a large number of predefined variables to any script
which it runs. Many of these variables, however, cannot be fully
documented as they are dependent upon which server is running, the
version and setup of the server, and other factors. Some of these
variables will not be available when PHP is run on the
command line.
For a listing of these variables, please see the section on
Reserved Predefined Variables.
Warning
In PHP 4.2.0 and later, the default value for the PHP directive register_globals is
off. This is a major change in PHP. Having
register_globals off affects the set of predefined
variables available in the global scope. For example, to get
DOCUMENT_ROOT you'll use
$_SERVER['DOCUMENT_ROOT'] instead of
$DOCUMENT_ROOT, or $_GET['id'] from
the URL http://www.example.com/test.php?id=3 instead
of $id, or $_ENV['HOME'] instead of
$HOME.
For related information on this change, read the configuration entry for
register_globals, the security
chapter on Using Register Globals
, as well as the PHP » 4.1.0
and » 4.2.0 Release
Announcements.
Using the available PHP Reserved Predefined Variables, like the
superglobal arrays,
is preferred.
From version 4.1.0 onward, PHP provides an additional set of predefined arrays
containing variables from the web server (if applicable), the
environment, and user input. These new arrays are rather special
in that they are automatically global--i.e., automatically
available in every scope. For this reason, they are often known as
"superglobals". (There is no mechanism in PHP for
user-defined superglobals.) The superglobals are listed below;
however, for a listing of their contents and further discussion on
PHP predefined variables and their natures, please see the section
Reserved Predefined Variables.
Also, you'll notice how the older predefined variables
($HTTP_*_VARS) still exist.
As of PHP 5.0.0, the long PHP
predefined variable
arrays may be disabled with the
register_long_arrays
directive.
Note:
Variable variables
Superglobals cannot be used as
variable variables
inside functions or class methods.
Note:
Even though both the superglobal and HTTP_*_VARS can exist at the same
time; they are not identical, so modifying one will not change the other.
If certain variables in variables_order are not set, their
appropriate PHP predefined arrays are also left empty.