在PHP着访问环境变量 [英] Cant access environment variables in php

查看:97
本文介绍了在PHP着访问环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

林有问题访问在PHP操作系统环境变量
我有阿帕奇/ PHP安装一个CentOS 6.3图像

Im having issues accessing OS environment variables in php I have apache/php installed on a centos 6.3 image

在httpd.confmodmod_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我知道

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

有IM后的变量,但是如果我执行的print_r($ _ ENV); 在PHP中,我得到

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

也看了看$ _ SERVER&安培; $ GLOBALS。

have also looked in $_SERVER & $GLOBALS.

有趣的是,如果我执行 PHP -i 壳我看到_ENV正确设置ENV变量

Interestingly if I execute php -i in shell I see the env variables set correctly in _ENV

我要指出的IM在泊坞窗容器中运行这一点,但是我不认为这是一个问题,因为变量#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

推荐答案

我最后不得不几个选项


  1. 如果泊坞窗容器需要运行多个服务,设定ENV瓦尔到/ etc /环境将使其可用于所有用户。我添加下面一行到我Dockerfile CMD

  1. 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 /环境]

如果泊坞窗容器中运行一个服务,它的最佳入口点设置为所需的应用程序,包膜增值经销商将自动传递到应用程序的用户。这是我的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,前景]

这篇关于在PHP着访问环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆