php 显示环境变量,在PHP中使用环境变量

构建Docker的php开发环境,编写测试程序的时候,发现php的getenv方法一直都是返回的false,这是因为php-fpm清除了环境变量

验证环境变量是否存在

➜ docker exec -it $containerName env | grep HOSTNAME

HOSTNAME=php

PHP_FPM的配置

sudo vim /etc/php/php-fpm/php-fpm.d/www.conf

; Clear environment in FPM workers

; Prevents arbitrary environment variables from reaching FPM worker processes

; by clearing the environment in workers before env vars specified in this

; pool configuration are added.

; Setting to "no" will make all environment variables available to PHP code

; via getenv(), $_ENV and $_SERVER.

; Default Value: yes

clear_env = no

在PHP-FPM的配置中默认是清除环境变量,因为考虑到在Docker容器之间的通讯是通过主机名的方式建立通讯,当然也可以写IP地址,但是IP地址每次重启容器都会发生变化,Docker也不建议使用IP地址,所以在Docker的环境中不能清除环境变量,在Docker的容器中环境变量也是非常小的,都是需要用到的环境变量

docker exec dockerphp_php_1 env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

HOSTNAME=php

MYSQL_PASSWORD=node-app

REDIS_HOST=redis

MYSQL_DATABASE=node-app

NGINX_PORT=3000

MYSQL_ROOT_PASSWORD=node-app

NODE_ENV=development

MYSQL_USER=node-app

DB_HOST=mysql

APP_PORT=9000

MONGO_HOST=mongo

REDIS_CONF=/usr/local/etc/redis/redis.conf

PHP_HOST=php

HOME=/root

在PHP-FPM中还有另一种方传递环境变量到PHP-FPM的进程中,可以选择性使用环境变量

sudo vim /etc/php/php-fpm/php-fpm.d/www.conf

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from

; the current environment.

; Default Value: clean env

;env[HOSTNAME] = $HOSTNAME

;env[PATH] = /usr/local/bin:/usr/bin:/bin

;env[TMP] = /tmp

;env[TMPDIR] = /tmp

;env[TEMP] = /tmp

如果你使用的Apache

在Apache中的配置

...

SetEnv VARIABLE_NAME variable_value

...

为什么限制对环境变量的访问

在网上没有找到资料,可能是处于安全的考虑,或者考虑到系统环境变量太多的原因

我的Docker开发环境Github

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值