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

ber*_*kes 14 php environment-variables command-line-interface

我想设置一个环境变量,然后在PHP中访问它,但无法找到如何执行此操作.

在(linux)shell中,我运行:

$ APP_ENV="development"
$ export $APP_ENV
Run Code Online (Sandbox Code Playgroud)

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

<?php
print $_ENV["APP_ENV"];
print getenv("APP_ENV");
Run Code Online (Sandbox Code Playgroud)

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

$ php testenv.php
Run Code Online (Sandbox Code Playgroud)

这没有打印并发出通知:

Notice: Undefined index: APP_ENV in /xxxx/envtest.php on line 2
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么?

Bar*_*mar 17

不要$export命令中使用,它应该是:

export APP_ENV
Run Code Online (Sandbox Code Playgroud)

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

export APP_ENV="development"
Run Code Online (Sandbox Code Playgroud)

有了$,你有效地做了:

export development
Run Code Online (Sandbox Code Playgroud)

  • @cuewizchris我不是在谈论`export`之前的'$`,我正在谈论的是_after_它. (3认同)
  • 当然你是对的,我需要另一杯咖啡.我的错.:) (2认同)

Ahm*_*sud 11

问题1导出环境变量

您的导出不正确.

$ APP_ENV="development"
$ export APP_ENV
Run Code Online (Sandbox Code Playgroud)

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

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

<?php
  echo getenv ("APP_ENV");
?>
Run Code Online (Sandbox Code Playgroud)

问题2:未定义的索引:

<?php
   echo $_ENV["APP_ENV"];
?>
Run Code Online (Sandbox Code Playgroud)

如果您从getenv超级全局获得适当的值,$_ENV那么您可能必须检查您的ini文件.

引用php.org:

如果$ _ENV数组神秘地为空,但在调用getenv()或phpinfo()时仍然看到变量,请检查 http://us.php.net/manual/en/ini.core.php#ini .variables-order ini设置以确保它在字符串中包含"E".