如何为 www-data 设置环境变量?

ter*_*don 2 environment-variables apache-httpd

我在 dba.se 上问了一个问题,关于如何为我的 Perl CGI 脚本提供访问它需要查询的 MySQL 数据库所需的密码。我只收到了一个答案,但那个答案建议我将密码保存为环境变量。

好的,按照apache2运行,用户是:www-data/etc/passwd$HOME/var/www

$ grep www /etc/passwd
www-data:x:33:33:www-data:/var/www:/bin/sh
Run Code Online (Sandbox Code Playgroud)

我尝试/var/www/.profile用这条线创建

export db_pass="password"
Run Code Online (Sandbox Code Playgroud)

然后让我的 Perl 脚本打印$ENV{"db_pass"}但失败了,变量是空的。我检查了一下,$ENV{PATH}并按预期打印。

那么,如何为该用户设置任意环境变量?

该服务器是在 VM 上运行的 Ubuntu 服务器(在 Windows 上运行,不是我的选择,不要问)。

$ apache2 -version
Server version: Apache/2.2.14 (Ubuntu)
Server built:   Feb 14 2012 16:42:25
Run Code Online (Sandbox Code Playgroud)

tyl*_*erl 7

您使用 Apache环境变量操作

例如:

SetEnv db_pass swordfish
Run Code Online (Sandbox Code Playgroud)

这可以在 httpd.conf 或 .htaccess 中完成。您还可以在重写规则中设置环境变量,如下所示:

RewriteRule someurl - [E=dbpass:swordfish]
Run Code Online (Sandbox Code Playgroud)