无法通过www-data访问env变量

时间:2016-08-07 21:39:01

标签: php apache ubuntu server lamp

我想通过网络用户将我的环境变量访问到php文件中 当我在服务器上执行printenv时,不会显示该特定环境变量,但是当它作为Web用户运行时,sudo -u www-data printenv它不会显示。 我的服务器是在DigitalOcean上的Ubuntu 14.04上托管的apache服务器,任何帮助都将非常感谢。 感谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先,检查您是否可以在shell上“手动”获取所需的数据:

sudo su yourusername -c printenv

这是您要查找的数据吗?您被问到一个密码,对(大多数情况下应该是这样)?

对于www-data可以访问你的环境变量,它应该“按你”进行检查,因此它要求输入密码并失败,因为我们没有通过php传递它。我们不会。

在没有安全问题的情况下执行此操作的正确方法是使用sudoers,允许某些用户执行某些命令而不会被要求传递。 要使用它,请以root身份运行命令visudo,然后在文件末尾添加它

www-data  ALL = NOPASSWD: su yourusername -c printenv

现在可以从用户www-data运行该命令而不传递,因此PHP可以使用它。

编辑:通过这种方式,您无法在不知道用户名的情况下访问用户环境,但这对您自己的使用非常有用。

相关问题