我有一个索引.php文件正在运行一些脚本来发出mysql请求。出于明显的安全原因,我想从此脚本中删除 mysql 凭据(主机、密码、用户、数据库),并用一些 apache 环境变量替换它们。
我尝试使用以下代码行在/etc/apache2/envvars 中创建这样的变量:export MYSQL_USER='my_user'
然后我打算使用 getEnv php 函数将其恢复,如下所示:getenv('MYSQL_USER')
但这不会返回任何内容。
知道吗?谢谢!
四个步骤:
- 在/etc/apache2/envvars 中:
export MYVAR='value'
- 在/etc/apache2/apache2.conf 中:
PassEnv MYVAR
- 重启阿帕奇
- 在运行 Apache 2 的 PHP 文件中:
echo $_SERVER['MYVAR'];
在Apache的虚拟主机中,您可以使用
SetEnv VARIABLE_NAME value
并从您的 PHP 代码中获取此变量的值
$variable = getenv('VARIABLE_NAME');
您可以在此处阅读有关SetEnv的更多信息 http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv
如果您想将密码存储在环境变量中,但不希望其他用户能够读取密码或密钥,您可以按照以下步骤操作(在 Ubuntu 18.04 上测试):
- 创建文件
/etc/apache2/conf-available/aws_key.conf
- 将所有权更改为根
sudo chown root:root /etc/apache2/conf-available/aws_key.conf
- 更改文件权限,使其仅对根
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']
访问。