我在 Amazon Web Services 上使用 Linux EC2 实例,我通过执行将实例 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 中的变量中检索数据时,出现错误:
Undefined index: EC2_INSTANCE_ID
(此错误来自$_ENV['...'],getenv() 根本不返回变量的值。)
我已经通过设置 variables_order = "EGPCS"
在 php.ini 中设置了环境变量。
当我在命令行中运行 printenv
时,我得到 EC2_INSTANCE_ID=i-039.....
。
我在设置环境变量后使用service httpd restart
重启了apache。
那么为什么 php 不获取变量?
最佳答案
如果你执行 导出 VARNAME=值 在 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
关于php - 在php中检索环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41331993/