我如何知道哪个用户正在运行当前的 php 脚本


How do I find out, which user is running the current php script?

当我在服务器上运行脚本时,我们如何确定php脚本在哪个用户下运行?它是否偶然在与apache或phpmyadmin相同的用户下运行?我的问题可能框架错误,但我想知道哪个用户,以便我在/var 中为不同文件夹设置适当的权限

执行whoami

<?php echo exec('whoami'); ?>

如果您有可用的 posix 函数(在大多数基于 Linux 的环境中默认启用),那么您可以使用 posix_geteuidposix_getpwuid 来获取用户名(至少在非 Windows 环境中),如下所示:

$pwu_data = posix_getpwuid(posix_geteuid());
$username = $pwu_data['name'];

另一种(更昂贵)的方法是使用像exec这样的shell执行函数来运行whoami:

$username = exec('whoami');

甚至是反引号(尽管您可能需要修剪换行符):

$username = `whoami`;

我个人只需要获取运行在 shell(在命令行上)的 PHP 脚本的脚本运行的用户的用户名。通常,在构建对 Web 服务器正在处理的请求的响应的过程中运行的脚本将以 Web 服务器用户的身份运行,例如 www-data、apache 等。在 Apache 中,运行 apache/httpd 进程的用户使用 User 指令进行设置。

重要说明:get_current_user不会为您提供运行脚本的用户的用户名,而是为您提供脚本的所有者。这里的一些答案(适当地投了反对票)建议使用 get_current_user ,但这不会给你运行当前脚本的用户的用户名。

不要使用"whoami"。执行进程时,用户不一定与运行脚本期间的有效用户相同。但无论如何,"id"会提供更多有用的信息。而是调用 get_current_user()。这么简单!

使用这个:

echo get_current_user();

请务必阅读评论,因为看起来这个答案实际上并没有按照您想要的方式。

使用这个:

$_SERVER['REMOTE_USER'];

可以设置此变量,也可以不设置此变量。