The problem :

I want to use $_ENV so i can get the username of the logged user.  Everyone should use getenv() instead, but if you need $_ENV to be active you need to do this.

Edit your php.ini file. You can find which one you are using with "php -i" from cli or with phpinfo() through your browser. Search for "variable_orders"and set it to
variables_order = "GPCSE"

Each letter is for one superglobals variable ( get, post, cookie, server and env ). You need to know that each one you add will cause some performance penalty and this is why normally you don't add the letter "e".

From the php.ini file:

; This directive determines which super global arrays are registered when PHP
; starts up. If the register_globals directive is enabled, it also determines
; what order variables are populated into the global space. G,P,C,E & S are
; abbreviations for the following respective super globals: GET, POST, COOKIE,
; ENV and SERVER. There is a performance penalty paid for the registration of
; these arrays and because ENV is not as commonly used as the others, ENV is
; is not recommended on productions servers. You can still get access to
; the environment variables through getenv() should you need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";

From the doc:

Sets the order of the EGPCS (Environment, Get, Post, Cookie, and Server) variable parsing. For example, if variables_order is set to "SP" then PHP will create the superglobals $_SERVER and $_POST, but not create $_ENV, $_GET, and $_COOKIE. Setting to "" means no superglobals will be set.

If the deprecated register_globals directive is on, then variables_order also configures the order the ENV, GET, POST, COOKIE and SERVER variables are populated in global scope. So for example if variables_order is set to "EGPCS", register_globals is enabled, and both $_GET['action'] and $_POST['action'] are set, then $action will contain the value of $_POST['action'] as P comes after G