在php中检索环境变量

时间:2016-12-26 13:26:18

标签: php apache amazon-ec2

我在Amazon Web Services上使用Linux EC2实例,我通过执行

将instance-id设置为环境变量
export EC2_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)

当我尝试使用$_ENV['EC2_INSTANCE_ID']getenv("EC2_INSTANCE_ID")从php中的变量检索数据时出现错误:

  

未定义索引:EC2_INSTANCE_ID

(此错误来自$ _ENV ['...'],getenv()根本不返回变量的值。)

我已经通过设置variables_order = "EGPCS"

在php.ini中设置了环境变量

当我在命令行中运行printenv时,我得到EC2_INSTANCE_ID=i-039.....

在设置环境变量后,我使用service httpd restart重新启动了apache。

那么为什么php没有获取变量?

1 个答案:

答案 0 :(得分:4)

如果你执行 export VARNAME = value 在shell中,正如您在问题中所建议的那样,在Web服务器中运行的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