我想通过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可以使用它。
编辑:这样你就不能在不知道用户名的情况下访问用户环境,但这对于你自己的使用是很好的。