Intereting Posts

Получение переменной среды в php

Я использую экземпляр 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