我想在PHP中获取当前脚本用户(nginx/www/apache等)的主目录。我用
$output_message = shell_exec('echo ~'); var_dump($output_message);
它在我的本地服务器上正常工作,在Amazon示例上。但它在虚拟主机上只输出“~”。也许,你有工作的解决方案,以获得当前用户的主目录?先谢谢你了
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']。
$user['dir']
hmmo2u0o2#
使用$_SERVER['HOME']或您可以尝试使用
$_SERVER['HOME']
$home = getenv("HOME");
注意:这要求您通过命令行执行脚本。
6bc51xsx3#
在大多数常规服务器上,这些守护进程(apache,nginx等)没有真实的的“主目录”。如果你考虑“虚拟主机”,那是不可能的,因为每个用户只能有一个主目录,但是每个守护程序有许多vhosts。我猜你要找的是环境变量DOCUMENT_ROOT(当前vhost文档的根目录)。
$_SERVER['DOCUMENT_ROOT']
3条答案
按热度按时间r6hnlfcb1#
我创建了工作解决方案:
这将返回数组,例如
所以要访问用户的home目录,它是
$user['dir']
。hmmo2u0o2#
使用
$_SERVER['HOME']
或您可以尝试使用注意:这要求您通过命令行执行脚本。
6bc51xsx3#
在大多数常规服务器上,这些守护进程(apache,nginx等)没有真实的的“主目录”。
如果你考虑“虚拟主机”,那是不可能的,因为每个用户只能有一个主目录,但是每个守护程序有许多vhosts。
我猜你要找的是环境变量DOCUMENT_ROOT(当前vhost文档的根目录)。