当我在服务器上运行脚本时,我们如何确定运行php脚本的用户?它是否偶然在与apache或phpmyadmin相同的用户下运行?我的问题可能是错误的框架,但我想知道哪个用户,以便我为/ var
中的不同文件夹设置适当的权限答案 0 :(得分:21)
执行whoami
:
<?php echo exec('whoami'); ?>
答案 1 :(得分:7)
如果您有posix functions可用(在大多数基于Linux的环境中默认启用),那么您可以使用posix_geteuid
和posix_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
不会为您提供运行脚本的用户的用户名,而是为您提供脚本的OWNER。这里的一些答案(适当低估)建议使用get_current_user
,但这不会为您提供运行当前脚本的用户的用户名。
答案 2 :(得分:-1)
不要使用“whoami”。执行进程时,用户在运行脚本期间不一定与有效用户相同。但无论如何,“id”将提供更多有用的信息。而是调用get_current_user()。这么简单!
答案 3 :(得分:-3)
使用此:
echo get_current_user();
请务必阅读评论,因为看起来这个答案实际上并不符合您的要求。
答案 4 :(得分:-4)
使用此:
$_SERVER['REMOTE_USER'];
此变量可能已设置,也可能未设置。