【问题标题】: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'];

    【讨论】:

      【解决方案2】:

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

      SetEnv VARIABLE_NAME value
      

      并使用

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

      你可以在这里http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv阅读更多关于SetEnv的信息

      【讨论】:

        【解决方案3】:

        如果您想将密码存储在环境变量中,但不希望其他用户能够读取密码或密钥,您可以按照以下步骤操作(在 Ubuntu 18.04 上测试):

        • 创建文件/etc/apache2/conf-available/aws_key.conf
        • 将所有权更改为root sudo chown root:root /etc/apache2/conf-available/aws_key.conf
        • 更改文件权限,只对rootsudo 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'] 访问该密钥。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-25
          • 2019-12-12
          • 2017-03-28
          • 1970-01-01
          • 1970-01-01
          • 2020-03-02
          • 1970-01-01
          • 2012-08-22
          相关资源
          最近更新 更多