PHP。获取用户主目录(用于虚拟主机)

时间:2013-12-12 05:05:33

标签: php shell

我想在PHP中获取当前脚本用户的主目录(nginx / www / apache等)。 我用

$output_message = shell_exec('echo ~');
var_dump($output_message);

它在我的本地服务器上,在Amazon实例上正常工作。但它只在虚拟主机上输出“〜”。

也许,您是否有获取当前用户主目录的工作解决方案?

提前致谢

3 个答案:

答案 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']