编写 apache 环境变量并在 php 脚本中读取它们



我有一个索引.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
  • 重新启动 Apachesudo service apache2 restart

这个键可以在 PHP 中通过$_SERVER['AWS_SECRET_ACCESS_KEY']访问。

最新更新