PHP 无法访问 Docker 环境 (env) 变量

PHP Can't Access Docker Environment (env) Variable

这可能是一个愚蠢的问题,但由于我找不到适合我的解决方案,所以这里开始。

我有一个从 debian 11 使用 apache[=45= 构建的 docker 映像] 8.1 已安装。

我用类似的东西启动容器:

docker run -e MY_ENV_VAR=VALUE myphpimg bash

进入容器后,我 运行 "php -i" 可以看到所有环境变量,包括 "MY_ENV_VAR"

还好吧?没有。如果我尝试访问 php 脚本中的 env 变量,它根本不起作用。我尝试了“getenv”以及“$_ENV”和“$_SERVER”。

有什么想法吗?谢谢

为我工作:

经过几天的折腾,我让它开始工作,但并不完全理解它。 我的原始图像是使用 apache 和 php 8.1 安装的“from”debian 11 构建的,具有以下入口点:

ENTRYPOINT service apache2 restart && bash

我改成了:

ENTRYPOINT /usr/sbin/apache2ctl -D BACKGROUND && bash

成功了。

我现在相信在启动时所有 docker 环境变量都会传递给 apache,但是如果您出于某种原因重新启动 apache,您将失去对这些变量的访问权限。我知道因为在一切正常之后我重新启动了 apache。

我最终手动将传递给 docker 的环境变量添加到 /etc/init。d/apache2:

现在每次 apache 运行时都会传递环境变量,即使在重新启动时也是如此。但是,我必须使用“/etc/init.d/apache2 start”而不是“service apache2 start”。

奖金:

如果您需要使用 $_ENV 而不是 getenv() 编辑 php.ini

中的“variables_order”