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

编写apache环境变量并在php脚本中读取它们,php,apache2,environment-variables,Php,Apache2,Environment Variables,我有一个index.php文件,它正在运行一些脚本来请求mysql。出于明显的安全原因,我想从这个脚本中删除mysql凭据(主机、密码、用户、数据库),并用一些apache环境变量替换它们 我尝试使用以下代码行在/etc/apache2/envvars中创建这样的变量:export MYSQL\u USER='my\u USER',然后我打算使用getEnv php函数将其返回,如下所示:getEnv('MYSQL\u USER'),但这不会返回任何结果 有什么想法吗?谢谢 在Apache虚拟主

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

我尝试使用以下代码行在/etc/apache2/envvars中创建这样的变量:
export MYSQL\u USER='my\u USER'
,然后我打算使用getEnv php函数将其返回,如下所示:
getEnv('MYSQL\u USER')
,但这不会返回任何结果


有什么想法吗?谢谢

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

SetEnv VARIABLE_NAME value
然后使用

$variable = getenv('VARIABLE_NAME');
您可以在此处阅读有关SetEnv的更多信息

四个步骤:

  • 在/etc/apache2/envvars中:
    export MYVAR='value'
  • 在/etc/apache2/apache2.conf中:
    PassEnv MYVAR
  • 重新启动apache
  • 在运行apache2的php文件中:
    echo$\u服务器['MYVAR']

如果您希望在环境变量中存储密码,但不希望其他用户能够读取密码或密钥,则可以遵循以下步骤(在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\u SECRET\u ACCESS\u key abcdefg12345+-987654321
  • 启用配置文件
    sudo a2enconf aws\u键
  • 重新启动Apache
    sudo服务apache2重新启动
此密钥在PHP中可通过
$\u服务器['AWS\u SECRET\u ACCESS\u key']
访问