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

时间:2014-02-02 15:22:27

标签: php apache2 environment-variables

我有一个index.php文件正在运行一些发出mysql请求的脚本。出于明显的安全原因,我想从此脚本中删除mysql凭据(主机,密码,用户,数据库),并将其替换为一些apache环境变量。

我尝试使用以下代码行在/ etc / apache2 / envvars中创建此类变量:export MYSQL_USER='my_user'然后我打算使用getEnv php函数将其恢复原状:getenv('MYSQL_USER')但是这会返回什么都没有。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

四个步骤:

    / li / apache2 / envvars中的
  • export MYVAR='value'
  • 在/etc/apache2/apache2.conf中:PassEnv MYVAR
  • 重启apache
  • 位于php文件中的
  • 位于运行apache2的地方:echo $_SERVER['MYVAR'];

答案 1 :(得分:0)

在Apache的虚拟主机中,您可以使用

SetEnv VARIABLE_NAME value

并使用

从PHP代码中获取此变量的值
$variable = getenv('VARIABLE_NAME');

您可以在此处阅读有关SetEnv的更多信息http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv

答案 2 :(得分:0)

如果您希望将密码存储在环境变量中,但又不希望其他用户能够读取密码或密钥,则可以执行以下步骤(在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

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