php - 无法访问php中的环境变量

标签 php apache centos environment-variables docker

我在 php 中访问操作系统环境变量时遇到问题 我在 centos 6.3 镜像上安装了 apache/php

在httpd.conf中加载mod mod_env.so 在 php.ini 中我设置了variables_order =“EGPCS” 重新启动httpd(多次)

在 shell 中,如果我输入“env”,我会得到

DB_PORT_28017_TCP_PROTO=tcp 
HOSTNAME=c6188a8bd77f
DB_NAME=/rockmongo/db
DB_PORT_27017_TCP=tcp://172.17.0.36:27017
TERM=xterm
DB_PORT_28017_TCP_PORT=28017
DB_PORT=tcp://172.17.0.36:27017
DB_PORT_27017_TCP_PORT=27017
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/etc/php.d
DB_PORT_27017_TCP_PROTO=tcp
DB_PORT_28017_TCP_ADDR=172.17.0.36
DB_PORT_28017_TCP=tcp://172.17.0.36:28017
SHLVL=1
HOME=/
DB_PORT_27017_TCP_ADDR=172.17.0.36
container=lxc
_=/usr/bin/env
OLDPWD=/etc

其中有变量 im 之后,但是如果我在 php 中执行 print_r($_ENV); 我会得到

Array ( [TERM] => xterm [PATH] => /sbin:/usr/sbin:/bin:/usr/bin [PWD] => / [LANG] => C [SHLVL] => 2 [_] => /usr/sbin/httpd ) 

还查看了 $_SERVER 和 $GLOBALS。

有趣的是,如果我在 shell 中执行 php -i,我会看到 _ENV 中的环境变量设置正确

我应该注意到我在 docker 容器中运行它,但是我不认为这是一个问题,因为变量在 #env 和 #php -i 中正确显示。我认为我的 httpd/php 配置有问题

有人对此有建议吗? 谢谢

最佳答案

我最终有几个选择

  1. 如果 docker 容器需要运行多个服务,将环境变量设置为/etc/environment 将使它们可供所有用户使用。我将以下行添加到我的 Dockerfile CMD

    CMD ["env | grep _ >>/etc/environment"]

  2. 如果 docker 容器运行单个服务,最好将入口点设置为所需的应用程序,环境变量将自动传递给应用程序用户。这是我的 Dockerfile CDM 和运行 apache 的入口点

    ENTRYPOINT ["/usr/sbin/httpd"] CMD [“-D”,“前景”]

关于php - 无法访问php中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273265/

相关文章:

CentOS 7 上的 Docker - DNS 在容器中不起作用

java - webapp 在 tomcat6 上启动失败

PHP:通过引用传递

javascript - 清理了 SQL/PHP,它没有写入。不会选择你的 CSS

php - 如何处理用户输入的无效 UTF-8 字符

php - 是否存在已编译的 PHP 脚本?

php - Symfony2 从 api 数据填充选择列表

linux - 如何为父目录受限的其他 FTP 用户授予 apache web 目录访问权限

php - 部署独立的 PHP/MySQL 应用程序

centos - 在 KVM 主机上使用 iptables 设置 nat 时,无法路由到设置为在主机启动时自动启动的 VM