php - 在php中检索环境变量

标签 php apache amazon-ec2

我在 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/

相关文章:

javascript - AJAX 表单提交 - 没有返回数据

php - 适用于企业的 PHP MVC 框架; CakePHP 还是 Symfony?

java - HTTP CONNECT 隧道回复 BAD 请求 (400)

php - 如何将 PHP 通知和警告发送到 error_log 而不是在网页上?

windows - 使用 Chef Solo 配置 Windows EC2 实例并引导它

python - python平台库中的platform.linux_distribution返回(无,无,无)

php - 当其他无缓冲查询处于事件状态时无法执行查询

php - WordPress自研AMP - 编辑查询如果URL是homepage.com/amp即可获取头版帖子

PHP 5.4 无法修改 header 信息 - header 已发送

linux - 如何编写 shell 脚本在没有 ssh 的情况下在多台远程机器上运行脚本?