无法通过www-data访问环境变量


Unable to access env variables through www-data

我想通过web用户访问我的环境变量到一个php文件。
不是当我在服务器上执行printenv时,该特定的环境变量得到显示,
但在作为web用户运行时,sudo -u www-data printenv不显示。我的服务器是一个apache服务器托管在Ubuntu 14.04上的DigitalOcean,任何帮助将非常感激。由于

您可以通过$_ENV获取大多数环境变量。

首先,检查你是否可以在shell上"手动"获取你想要的数据:

sudo su yourusername -c printenv

这是你要找的数据吗?你被要求输入密码,对吧(在大多数情况下应该是这样的)?

对于www-data可以访问您的环境变量,它应该记录"as you"进行检查,因此它要求密码并失败,因为我们没有通过php传递它。我们不会。

在没有安全问题的情况下,正确的方法是使用sudoers,它允许某些用户执行某些命令而不被要求通过。要使用它,请以root用户身份运行命令visudo,然后在文件

末尾添加此命令
www-data  ALL = NOPASSWD: su yourusername -c printenv

现在,前面的命令可以在用户www-data上运行而不需要传递,所以PHP可以使用它。

编辑:这样你就不能在不知道用户名的情况下访问用户环境,但这对于你自己的使用是很好的。