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”
这可能是一个愚蠢的问题,但由于我找不到适合我的解决方案,所以这里开始。
我有一个从 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”