0
点赞
收藏
分享

微信扫一扫

php获取外部环境变量的几种方式

在php中,使用getenv函数 — 获取单个或者全部环境变量 https://www.php.net/manual/zh/function.getenv.php

使用场景

在项目中进行服务配置时,不会将敏感消息存放在项目代码中。通过读取并使用外部数据,可以在一定程度上防止敏感信息泄漏进而留下安全隐患。

获取环境变量示例

以mysql数据库配置为例,所有的敏感信息都是通过获取环境变量时实现的。

return [
    'class'    => 'yii\db\Connection',
    'dsn'      => 'mysql:host='. getenv('MYSQL').';port=' . getenv('MYSQL_PORT') . ';dbname=' . getenv('MYSQL_ENV_MYSQL_DATABASE'),
    'username' => getenv('MYSQL_ENV_MYSQL_USER'),
    'password' => getenv('MYSQL_ENV_MYSQL_PASSWORD'),
    'charset'  => 'utf8',
];

常见的几种设置环境变量的方式

1.使用docker容器创建php运行环境的时,通过-e参数设置docker容器的环境变量

docker run --name php74 -it -e TEST_VAR1=hello -e TEST_VAR2=world php:7.4.33-fpm   /bin/bash

2.使用nginx作为php反省代理服务时,通过fastcgi_param指令来指定

fastcgi_param TEST_VAR1 "hello";
fastcgi_param TEST_VAR2 "world";

3.在linux或者windows操作系统中设置环境变量

#linux操作系统设置环境变量
vim ~/.bashrc
export TEST_VAR1=hello

#windows操作系统中设置环境变量
系统属性-->高级-->环境设置

4.php脚本中通过putenv函数设置环境变量

putenv("TEST_VAR2=world");
echo getenv("TEST_VAR2");

注意事项:当无法读取环境变量时候,需要检查php.ini中的variables-order配置

variables_order string 设置 EGPCS(Environment、Get、Post、Cookie 和 Server)变量解析的顺序。

举报

相关推荐

0 条评论