PHP 命令行界面 : Possible to set a $_SERVER Variable that's an Array?

标签 php bash symfony command-line-interface magento2

bash 中从命令行运行 PHP 时,是否可以设置一个 $_SERVER 变量,它本身就是一个数组?

也就是说,如果我做这样的事情

$ export test=foo

然后运行这样的程序

<?php
#File: test.php
var_dump($_SERVER['test']);

程序将输出字符串值“foo”。是否可以让 $_SERVER['test'] 等于一个 PHP 数组而无需额外的 PHP 代码?

我要解决的具体问题是我有一个无法修改的基于 Symfony CLI 的程序,该程序使用 $_SERVER 变量来引导其环境。

use Magento\Framework\App\Bootstrap;
use Magento\Framework\Shell\ComplexParameter;
//...
$bootstrapParam = new ComplexParameter(self::INPUT_KEY_BOOTSTRAP);
$params = $bootstrapParam->mergeFromArgv($_SERVER, $_SERVER);
$params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = null;
$bootstrap = Bootstrap::create(BP, $params);

Bootstrap::create(BP, $params); 识别 $params 中的一些嵌套键——我正在尝试找到一种方法来更改这些值无需修改 CLI 程序本身。

最佳答案

您可以通过.htaccess 文件或apache .conf 文件设置任何服务器变量,您可以使用mod_env 来实现。

SetEnv MY_EXAMPLE myexample_data

然后你可以在php文件中访问那个变量

echo $_SERVER["MY_EXAMPLE"]; //outputs myexample_data

或者在使用 PHP CLI 时 您可以使用以下设置 $_SERVER 变量

putenv('MY_EXAMPLE=myexample_data');

关于PHP 命令行界面 : Possible to set a $_SERVER Variable that's an Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41288035/

相关文章:

php - Symfony2 和 Doctrine2 - 设置 onDelete

php - 拉拉维尔 : to join 2 join OR order with null

没有缩进空格的git分支输出? (除了正则表达式操作)

arrays - fos elasticabundle 映射类型 "array"

linux - 到二进制文件的软链接(soft link)始终使用主文件夹路径(而不是当前文件夹)

regex - Linux 找到所有缩小的东西?

Symfony2/Doctrine2 : Having generic links between objects

php - 将curl CLI命令转换为PHP

php - 使用 Php 更新 MySql 列时出现错误

php - codeigniter 的自定义配置文件