将环境变量传递到php命令行脚本中

时间:2013-08-16 08:23:46

标签: php environment-variables command-line-interface

我想设置一个环境变量,然后在PHP中访问它,但找不到如何操作。

在(linux)shell中,我运行:

$ APP_ENV="development"
$ export $APP_ENV

然后我运行一个简单的测试脚本testenv.php:

<?php
print $_ENV["APP_ENV"];
print getenv("APP_ENV");

从设置该变量的同一个shell:

$ php testenv.php

这没有任何打印并发出通知:

Notice: Undefined index: APP_ENV in /xxxx/envtest.php on line 2

注意事项是有道理的,因为在环境变量中根本找不到APP_ENV,getenv()不会发出警告但只返回任何内容。

我错过了什么?

2 个答案:

答案 0 :(得分:16)

请勿在{{1​​}}命令中使用$,它应该是:

export

您可以将其与作业相结合:

export APP_ENV

使用export APP_ENV="development" ,您实际上在做:

$

答案 1 :(得分:8)

问题1导出环境变量

您的导出不正确。

$ APP_ENV="development"
$ export APP_ENV

请注意,导出语句中缺少$! :P

首先检查getenv以确保导出有效:

<?php
  echo getenv ("APP_ENV");
?>

问题2:未定义的索引:

<?php
   echo $_ENV["APP_ENV"];
?>

如果您从getenv获得了正确的值,而不是超级全局$_ENV,那么您可能需要检查您的ini文件。

引用php.org:

  

如果你的$ _ENV数组是神秘的空,但你还是看到了   调用getenv()或phpinfo()时的变量,检查你的   http://us.php.net/manual/en/ini.core.php#ini.variables-order ini   设置以确保它在字符串中包含“E”。