Виявляється, тут було дві проблеми:
1. $_ENV
заповнюється лише в тому випадку, якщо php.ini дозволяє це , що, схоже, не робить за замовчуванням, принаймні не в установці сервера WAMP за замовчуванням .
; 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";
; http:
variables_order = "GPCS"
Коли я встановлюю variables_order
назад EGPCS
, $_ENV
більше не є порожнім.
2. Коли ви використовуєте SetEnv
у своєму .htaccess
, він закінчується $_SERVER
, а не$_ENV
, що, я повинен сказати, трохи заплутує, коли його називають SetEnv
...
SetEnv ENV dev
SetEnv BASE /ssl/
var_dump($_SERVER['ENV'], $_SERVER['BASE']);
3. getenv
Функція завжди працюватиме і на неї не впливає налаштування PHP для $ _ENV. Крім того, схоже, вона робить це нечутливою до регістру, що може бути корисним.
var_dump(getenv('os'), getenv('env'));
$_SERVER
var. Я б проголосував за використання,getenv()
яке, наскільки я розумію, просто шукає їх, не враховуючи регістр.