我有一个docker容器,我在Alpine上设置了PHP 5.6和Apache 2.4。在我的PHP代码中,我使用getEnv
来读取我从Host Machine传递的环境变量作为docker compose文件的一部分。似乎我可以读取环境变量。也许我的理解是错误的,但我认为我需要在我的Apache虚拟主机配置中使用passenv,或者我应该将其添加到envvars
文件中并由Apache加载。知道为什么会这样吗?
搬运工-compose.yml
version: '2'
services:
app:
image: image1
environment:
- HOST
当我运行Env
时,在容器内部,我可以看到HOST=192.168.1.1
。在PHP代码中,我正在使用getEnv('HOST')
,这是有效的。这个问题不是如何让它工作,因为它工作:)但更像是为什么它的工作
答案 0 :(得分:0)
在对此问题做进一步研究之后。我想也许我知道为什么。 env
Apache模块用于将环境变量传递给CGI和SSI页面。因为对于CGI和SSI,Apache产生了一个单独的进程,我们需要env
模块将环境变量传递给新创建的进程。在Apache PHP模块的情况下,同样没有发生。在Apache PHP模块中,Apache使用嵌入式解释器来处理php文件。由于它是相同的Apache进程,因此主机中可用的所有环境变量都可用于该进程。