使用内置PHP web服务器设置环境变量

使用内置PHP web服务器设置环境变量,php,environment-variables,embeddedwebserver,Php,Environment Variables,Embeddedwebserver,PHP5.4支持用于开发目的的。我们正在开发的应用程序是通过环境变量配置的 使用Apache,您可以执行以下操作: SetEnv FAVORITE_COLOR white 使用普通CLI,您可以执行以下操作: $ export FAVORITE_COLOR=black $ php -a php > echo $_SERVER['FAVORITE_COLOR']; 有没有办法为内置web服务器设置这些变量?看起来E被排除在运行内置服务器的变量顺序设置之外。如果将E添加到变量_顺序设置中,

PHP5.4支持用于开发目的的。我们正在开发的应用程序是通过环境变量配置的

使用Apache,您可以执行以下操作:

SetEnv FAVORITE_COLOR white
使用普通CLI,您可以执行以下操作:

$ export FAVORITE_COLOR=black
$ php -a
php > echo $_SERVER['FAVORITE_COLOR'];

有没有办法为内置web服务器设置这些变量?

看起来E被排除在运行内置服务器的变量顺序设置之外。如果将E添加到变量_顺序设置中,它将起作用:

test.php

<?php
var_dump($_ENV['FOO']);
输出:

string 'BAR' (length=3)
在Windows上的PHP 5.4.12上测试:

SET FOO=BAR
php -s localhost:9090

如果您像在第二个示例中那样设置环境变量,然后使用适当的选项而不是
-a
,来启动web服务器会怎么样?在
$\u ENV
中没有任何内容,
$\u server
中的典型内容(例如
'DOCUMENT\u ROOT'
)会返回任何内容吗?这是。。。令人不安。如果使用
setenv
,您至少可以在
getenv
$\u ENV
中获取相同的值吗?我想自己测试一下,但我手头没有5.4的副本。可以使用
getenv(“FAVORITE\u COLOR=VIOLET\u BLUE”)
检索带有
putenv(“FAVORITE\u COLOR”)
的变量集,但是
$\u ENV
将保持为空。令人不安的强词=)如果您想知道为什么在Symfony2中设置容器参数不起作用,请查看此问题:因此无法将其显示在
$\u SERVER
?@caessol中。看起来2014年报告的php问题被标记为2015年无法修复。
$\u ENV
似乎不可靠,它可能在
php.ini
中被禁用,我们可能无法更改它。我发现当PHP 7 CLI web服务器上的
$\u ENV
为空时,
getenv()
可以工作。但是,同时,如果这些环境变量是通过Apache或NGINX设置的,它们将显示为CGI变量,并且Apache和NGINX似乎会填充
$\u服务器
,但不一定是
getenv
@lomse,它在windows上的git bash shell中为我工作,如果您已经安装了linux子系统,它可能也可以在linux子系统中工作。
SET FOO=BAR
php -s localhost:9090