PHP:检查是否正在使用sudo运行脚本,或者用户是否使用`php`

Abu*_*san 4 php permissions

如何检查脚本是否使用sudo访问或不使用PHP运行?

Joh*_*ith 7

注意:这个问题可能更适合Stack Overflow,即使它指的是Unix和Linux系统上的PHP(权限提升,权限等).

您可以使用PHP的POSIX函数:

这是一个小例子:

<?php
$userinfo = posix_getpwuid(posix_geteuid());
echo "This script is run with " . $userinfo["name"] . "'s privileges.";
?>
Run Code Online (Sandbox Code Playgroud)

测试...

$ php myfile.php
This script is run with myuser's privileges.
$ sudo php myfile.php
This script is run with root's privileges.
Run Code Online (Sandbox Code Playgroud)

顺便说一下,因为root总是UID 0,所以你可以检查一下posix_geteuid() == 0.

现在,如果您现在想要用户是使用CLI(命令行)还是通过Web服务器,请查看Stack Overflow上的这个问题php_sapi_name()函数.

另一个注意事项:我很确定以root身份运行PHP脚本并不是最好的想法.您可能想再次考虑脚本真正需要的权限.