2013-08-16 114 views
10

我想设置一个环境变量,然后在PHP中访问它,但无法找到如何操作。将环境变量传递给php命令行脚本

在(Linux)的壳,我运行:

$ APP_ENV="development" 
$ export $APP_ENV 

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

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

,从同样的壳,其中该变量被设置:

$ php testenv.php 

This Prints nothing and throw a notice:

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

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

我错过了什么?

回答

15

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

export APP_ENV 

可以与分配相结合这样的:

export APP_ENV="development" 

随着$,你是切实做好:

export development 
+0

我认为OP包含“$”仅仅是为了强调这些行是shell命令。 – ciruvan

+3

@cuewizchris我不是在'export'之前谈论'$',我正在谈论那个_after_。 – Barmar

+0

@cuewizchris实际上没有Barmar是正确的出口$ APP_ENV不应该在前面有$ –

7

问题1导出ing环境变量

您的输出是错误的。

$ 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”。

相关问题