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
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.
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.
PHP Superglobals
Contains a reference to every variable which is currently
available within the global scope of the script. The keys of
this array are the names of the global variables.
$GLOBALS
has existed since PHP 3.
Variables set by the web server or otherwise directly related
to the execution environment of the current script. Analogous
to the old $HTTP_SERVER_VARS
array (which is
still available, but deprecated).
Variables provided to the script via URL query string. Analogous to the
old $HTTP_GET_VARS
array (which is still
available, but deprecated).
Variables provided to the script via HTTP POST. Analogous to the
old $HTTP_POST_VARS
array (which is still
available, but deprecated).
Variables provided to the script via HTTP cookies. Analogous to
the old $HTTP_COOKIE_VARS
array (which is
still available, but deprecated).
Variables provided to the script via HTTP post file
uploads. Analogous to the old
$HTTP_POST_FILES
array (which is still
available, but deprecated). See POST method
uploads for more information.
Variables provided to the script via the environment. Analogous
to the old $HTTP_ENV_VARS
array (which is
still available, but deprecated).
Variables provided to the script via the GET, POST, and COOKIE input mechanisms, and which therefore cannot be trusted. The presence and order of variable inclusion in this array is defined according to the PHP variables_order configuration directive. This array has no direct analogue in versions of PHP prior to 4.1.0. See also import_request_variables().
Caution |
Since PHP 4.3.0, FILE information from |
Note: When running on the command line , this will not include the
argv
andargc
entries; these are present in the$_SERVER
array.
Variables which are currently registered to a script's
session. Analogous to the old
$HTTP_SESSION_VARS
array (which is still
available, but deprecated). See the Session handling functions section
for more information.