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

PHP 5.4 支持用于开发目的的内置 Web 服务器。我们正在开发的应用程序是通过环境变量配置的。

使用Apache,你可以这样做:

SetEnv FAVORITE_COLOR white

使用正常的 CLI,您可以执行以下操作:

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

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


答案 1

看起来 E 已从运行内置服务器的variable_order设置中排除。如果将 E 添加到variable_order设置,则它有效:

测试.php

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

壳:

FOO=BAR php -d variables_order=EGPCS -S localhost:9090 /tmp/test.php

输出:

string 'BAR' (length=3)

在 PHP 5.4.12 上进行测试


答案 2

我使用Window DOS来启动PHP服务器。我将服务器启动命令存储在文本批处理文件(.bat)中,以使我不必一次选择并复制所有命令并将其粘贴到DOS终端中(请注意我复制的最后一个空行,以便PHP服务器在将命令粘贴到DOS中时自动启动, 否则,我需要手动使用密钥来启动服务器)。Enter

Q:
cd Q:\GitLabRepos\myapps\test1
set APPLICATION_TITLE=My testing application with this first env variable
set SOME_OTHER_ENV_VAR2={"myJsonElement":"some value"}
E:\PHP8\php.exe -d variables_order=E -S localhost:8000 -c php.ini

上面的命令说明:

第一行将更改为我的代码所在的驱动器。第二行将目录更改为我的根PHP应用程序代码(这是我想要启动PHP服务器的位置)。接下来,我在第 3 行和第 4 行上设置一些环境变量。最后,我使用该参数启动PHP服务器,以便我可以使用或检索PHP代码中的环境变量值(例如。 或 )。如果从服务器启动命令中排除,则只能用于访问环境变量。我使用该参数从php.ini文件加载其他PHP设置,但对于简单的服务器设置,可以排除这一点。Q:cd Q:\GitLabRepos\myapps\test1-d variables_order=E$_ENVgetenv()$_ENV['APPLICATION_TITLE']getenv('APPLICATION_TITLE')-d variables_order=Egetenv()-c php.ini

然后,如果我有一个包含以下代码的脚本:Q:\GitLabRepos\myapps\test1\index.php

<?php
echo getenv('APPLICATION_TITLE').'---'.$_ENV['APPLICATION_TITLE'].'...'.getenv('SOME_OTHER_ENV_VAR2');
?>

如果我在网络浏览器中访问,我应该看到localhost:8000

My testing application with this first env variable---My testing application with this first env variable...{"myJsonElement":"some value"}.


推荐