我想在PHP中获取当前脚本用户的主目录(nginx / www / apache等)。 我用
$output_message = shell_exec('echo ~');
var_dump($output_message);
它在我的本地服务器上,在Amazon实例上正常工作。但它只在虚拟主机上输出“〜”。
也许,您是否有获取当前用户主目录的工作解决方案?
提前致谢
答案 0 :(得分:18)
我创立了工作解决方案:
$user = posix_getpwuid(posix_getuid())
返回数组,例如
Array
(
[name] => username
[passwd] => ********
[uid] => 501
[gid] => 20
[gecos] => Full Name
[dir] => /home/username
[shell] => /bin/bash
)
所以要访问用户主目录,它是$user['dir']
。
答案 1 :(得分:2)
使用$_SERVER['HOME']
或尝试使用
$home = getenv("HOME");
注意:这要求您通过命令行执行脚本。
答案 2 :(得分:0)
在大多数常规服务器上,那些守护进程(apache,nginx等)没有真正的主目录"。
如果你考虑"虚拟主机",那是不可能的,因为每个用户只能有一个主目录,但每个守护进程有很多vhost。
我想你要找的是环境变量DOCUMENT_ROOT(当前vhost文档的根目录)。
$_SERVER['DOCUMENT_ROOT']