我想通过网络用户将我的环境变量访问到php文件中
当我在服务器上执行printenv
时,不会显示该特定环境变量,但是当它作为Web用户运行时,sudo -u www-data printenv
它不会显示。
我的服务器是在DigitalOcean上的Ubuntu 14.04上托管的apache服务器,任何帮助都将非常感谢。
感谢
答案 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可以使用它。
编辑:通过这种方式,您无法在不知道用户名的情况下访问用户环境,但这对您自己的使用非常有用。