【问题标题】:Write apache environment variables and read them in php script编写apache环境变量并在php脚本中读取它们
【发布时间】:2014-02-26 01:09:50
【问题描述】:
我有一个 index.php 文件,它正在运行一些发出 mysql 请求的脚本。出于明显的安全原因,我想从此脚本中删除 mysql 凭据(主机、密码、用户、数据库)并用一些 apache 环境变量替换它们。
我尝试使用以下代码行在 /etc/apache2/envvars 中创建此类变量:export MYSQL_USER='my_user',然后我打算使用 getEnv php 函数将其取回:getenv('MYSQL_USER'),但这不会返回任何内容。
有什么想法吗?谢谢!
【问题讨论】:
标签:
php
apache2
environment-variables
【解决方案1】:
四个步骤:
- 在 /etc/apache2/envvars 中:
export MYVAR='value'
- 在 /etc/apache2/apache2.conf 中:
PassEnv MYVAR
- 重启apache
- 在 apache2 运行所在的 php 文件中:
echo $_SERVER['MYVAR'];
【解决方案3】:
如果您想将密码存储在环境变量中,但不希望其他用户能够读取密码或密钥,您可以按照以下步骤操作(在 Ubuntu 18.04 上测试):
- 创建文件
/etc/apache2/conf-available/aws_key.conf
- 将所有权更改为root
sudo chown root:root /etc/apache2/conf-available/aws_key.conf
- 更改文件权限,只对root
sudo chmod 600 /etc/apache2/conf-available/aws_key.conf可读
- 将密码或密钥放入文件中,例如
SetEnv AWS_SECRET_ACCESS_KEY abcdefg12345+-987654321
- 启用配置文件
sudo a2enconf aws_key
- 重启 Apache
sudo service apache2 restart
在 PHP 中可以通过 $_SERVER['AWS_SECRET_ACCESS_KEY'] 访问该密钥。