12

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

4

5 回答 5

28

执行whoami

<?php echo exec('whoami'); ?>
于 2012-06-18T18:01:23.950 回答
8

如果您有可用的posix 函数(在大多数基于 Linux 的环境中默认启用),那么您可以使用posix_geteuidandposix_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,但这不会为您提供运行当前脚本的用户的用户名。

于 2013-07-17T20:17:30.680 回答
-1

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

于 2017-11-14T04:04:34.053 回答
-3

用这个:

echo get_current_user();

确保阅读评论,因为看起来这个答案实际上并没有达到你想要的效果。

于 2014-09-12T21:11:53.797 回答
-4

用这个:

$_SERVER['REMOTE_USER'];

这个变量可能会也可能不会被设置。

于 2012-06-18T18:04:34.443 回答