在php中检索一个环境variables

我正在Amazon Web Services上使用Linux EC2实例,在该实例中,通过执行将实例id设置为环境variables

export EC2_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id) 

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

未定义的索引:EC2_INSTANCE_ID

(这个错误来自$ _ENV ['…'],getenv()根本不会返回variables的值。)

我已经通过设置variables_order = "EGPCS"在php.ini中设置了环境variables。

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

设置环境variables后,我使用service httpd restart重启了apache。

那么为什么PHP不提取variables?

如果你在shell中执行export VARNAME = value,就像你在你的问题中提出的那样,那么运行在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