gpt4 book ai didi

PHP `getEnv` 能够读取系统环境变量

转载 作者:行者123 更新时间:2023-12-02 20:14:54 28 4
gpt4 key购买 nike

我有一个 docker 容器,我在 Alpine 之上设置了 PHP 5.6 和 Apache 2.4。在我的 PHP 代码中,我使用了 getEnv读取我作为 docker compose 文件的一部分从主机传递的环境变量。看来我可以读取环境变量。也许我的理解是错误的,但我认为我需要使用 passenv在我的 Apache 虚拟主机配置中,或者我应该将它添加到 envvars文件并由 Apache 加载。知道为什么会这样吗?

docker-compose.yml

version: '2'
services:
app:
image: image1
environment:
- HOST

当我运行 Env 时在容器内我可以看到 HOST=192.168.1.1 .在我使用的 PHP 代码中 getEnv('HOST')那行得通。这个问题不是如何让它像它一样工作:),而更像是它为什么起作用

最佳答案

在对这个问题做进一步的研究之后。我想也许我知道为什么。 env Apache 模块用于将环境变量传递给 CGI 和 SSI 页面。由于对于 CGI 和 SSI,Apache 产生了一个单独的进程,我们需要 env模块将环境变量传递给新创建的进程。在 Apache PHP Module 的情况下,不会发生同样的情况。在 Apache PHP 模块中,Apache 使用嵌入式解释器来处理 php 文件。由于它是同一个 Apache 进程,因此主机中可用的所有环境变量都可用于该进程。

  • https://httpd.apache.org/docs/2.4/mod/mod_env.html
  • https://blog.layershift.com/which-php-mode-apache-vs-cgi-vs-fastcgi/
  • 关于PHP `getEnv` 能够读取系统环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44170807/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com