为什么getenv()仅在从终端运行时返回变量,而不是通过Web服务器

mtm*_*ald 12 php

我正在尝试在我的PHP应用程序中使用自定义环境变量进行环境检测.我在/ etc/environment中设置了系统范围的变量,重新启动,并检查它是否通过终端使用printenv可见.

我还检查了在命令行运行PHP时它是否可见:

php -r 'echo getenv("LOCAL_DEVELOPMENT");'

//returns 'true' as expected
Run Code Online (Sandbox Code Playgroud)

但是当我从网页脚本尝试时,找不到变量:

var_dump(getenv("LOCAL_DEVELOPMENT"));

//returns 'boolean false' (not expected)
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu 12.04 LTS,PHP 5.4和Apache 2.2.

为什么变量在Web脚本中不可见,我该如何解决?

Rag*_*420 8

假设您使用的是apache服务器,我认为由于系统环境变量的限制,Apache的安全性受到限制.

你应该在apache上设置env变量,SetEnv LOCAL_DEVELOPMENT true或者甚至更好SetEnv APPLICATION_ENV development通常被认为是标准.