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

u3r8eeie  于 2023-05-05  发布在  PHP
关注(0)|答案(3)|浏览(283)

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

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

它在我的本地服务器上正常工作,在Amazon示例上。但它在虚拟主机上只输出“~”。
也许,你有工作的解决方案,以获得当前用户的主目录?
先谢谢你了

r6hnlfcb

r6hnlfcb1#

我创建了工作解决方案:

$user = posix_getpwuid(posix_getuid())

这将返回数组,例如

Array
(
    [name] => username
    [passwd] => ********
    [uid] => 501
    [gid] => 20
    [gecos] => Full Name
    [dir] => /home/username
    [shell] => /bin/bash
)

所以要访问用户的home目录,它是$user['dir']

hmmo2u0o

hmmo2u0o2#

使用$_SERVER['HOME']或您可以尝试使用

$home = getenv("HOME");

注意:这要求您通过命令行执行脚本。

6bc51xsx

6bc51xsx3#

在大多数常规服务器上,这些守护进程(apache,nginx等)没有真实的的“主目录”。
如果你考虑“虚拟主机”,那是不可能的,因为每个用户只能有一个主目录,但是每个守护程序有许多vhosts。
我猜你要找的是环境变量DOCUMENT_ROOT(当前vhost文档的根目录)。

$_SERVER['DOCUMENT_ROOT']

相关问题