Cant access environment variables in php(php无法访问环境变量)
问题描述
我在 php 中访问操作系统环境变量时遇到问题我在 centos 6.3 映像上安装了 apache/php
Im having issues accessing OS environment variables in php I have apache/php installed on a centos 6.3 image
在 httpd.conf mod mod_env.so 中加载在 php.ini 我设置 variables_order = "EGPCS"重新启动 httpd(多次)
in httpd.conf mod mod_env.so is loaded in php.ini I have set variables_order = "EGPCS" restarted httpd (many times)
如果我在 shell 中输入env",我会得到 p>
in shell if I type "env" I get
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
后面有变量,但是如果我在 php 中执行 print_r($_ENV);
我得到
which has the variables im after, however if I execute print_r($_ENV);
in php I get
Array ( [TERM] => xterm [PATH] => /sbin:/usr/sbin:/bin:/usr/bin [PWD] => / [LANG] => C [SHLVL] => 2 [_] => /usr/sbin/httpd )
还查看了 $_SERVER &$全球.
have also looked in $_SERVER & $GLOBALS.
有趣的是,如果我在 shell 中执行 php -i
我会看到 _ENV 中正确设置了 env 变量
Interestingly if I execute php -i
in shell I see the env variables set correctly in _ENV
我应该注意到我在 docker 容器中运行它,但是我不认为这是一个问题,因为变量在 #env & 中正确显示#php -i.我认为我的 httpd/php 配置有问题
I should note im running this in a docker container, however I dont believe it is a issue as variables display correctly in #env & #php -i. I think I have a issue with my httpd/php config
有人对此有什么建议吗?谢谢
Anyone have advice for this? thanks
推荐答案
我最终有几个选择
如果 docker 容器需要运行多个服务,将环境变量设置为/etc/environment 将使它们可供所有用户使用.我将以下行添加到我的 Dockerfile CMD
if docker container needs to run multiple services, setting env vars to /etc/environment will make them available for all users. I added the following line to my Dockerfile CMD
CMD ["env | grep _ >>/etc/environment"]
如果 docker 容器运行单个服务,最好将入口点设置为所需的应用程序,env vars 将自动传递给应用程序用户.这是我的 Dockerfile CDM &运行 apache 的入口点
if docker container runs a single service, its best to set the entry point to the desired application, env vars will automatically be passed to application user. this is my Dockerfile CDM & ENTRYPOINT to run apache
入口点 ["/usr/sbin/httpd"]CMD ["-D", "FOREGROUND"]
这篇关于php无法访问环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:php无法访问环境变量
基础教程推荐
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01