Я использую экземпляр Linux EC2 для веб-служб Amazon, где я устанавливаю идентификатор экземпляра в качестве переменной среды, выполняя
export EC2_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id) 
  Когда я пытаюсь извлечь данные из переменной в php, используя $_ENV['EC2_INSTANCE_ID'] или getenv("EC2_INSTANCE_ID") я получаю сообщение об ошибке: 
Неопределенный индекс: EC2_INSTANCE_ID
(Эта ошибка возникает из $ _ENV ['…'], getenv () просто не возвращает значение переменной.)
  Я уже установил переменные среды в php.ini, установив variables_order = "EGPCS" . 
  Когда я запускаю printenv в командной строке, я получаю EC2_INSTANCE_ID=i-039..... 
  Я перезапустил apache, используя service httpd restart после установки переменной среды. 
Итак, почему php не извлекает переменную?
Если вы выполняете экспорт VARNAME = значение в оболочке, как вы предлагаете в своем вопросе, тогда PHP-программа, работающая на веб-сервере, не сможет ее прочитать. Например, если вы используете Apache, то вам нужно будет установить эту переменную в конфигурации Apache для этого конкретного виртуального хоста .. что-то вроде:
 <VirtualHost ser.ver:80> SetEnv VARNAME value </VirtualHost> 
Затем PHP-программа на этом сервере сможет прочитать эту переменную с getenv () или $ _ENV, как вы ожидаете.
То, что вы описали, будет работать только в том случае, если ваша программа PHP выполняется как клиентская программа на вашем компьютере:
 $ export VARNAME=value $ cat "<?php echo getenv('VARNAME'); ?>" > test.php $ php test.php