【发布时间】:2013-12-12 05:05:33
【问题描述】:
我想在 PHP 中获取当前脚本用户(nginx/www/apache 等)的主目录。 我用
$output_message = shell_exec('echo ~');
var_dump($output_message);
它在我的本地服务器上正常工作,在亚马逊实例上。但它在虚拟主机上只输出“~”。
也许,您有获取当前用户主目录的有效解决方案吗?
提前致谢
【问题讨论】:
我想在 PHP 中获取当前脚本用户(nginx/www/apache 等)的主目录。 我用
$output_message = shell_exec('echo ~');
var_dump($output_message);
它在我的本地服务器上正常工作,在亚马逊实例上。但它在虚拟主机上只输出“~”。
也许,您有获取当前用户主目录的有效解决方案吗?
提前致谢
【问题讨论】:
我创建了可行的解决方案:
$user = posix_getpwuid(posix_getuid())
这会返回数组,例如
Array
(
[name] => username
[passwd] => ********
[uid] => 501
[gid] => 20
[gecos] => Full Name
[dir] => /home/username
[shell] => /bin/bash
)
所以要访问用户主目录,它是$user['dir']。
【讨论】:
在大多数常规服务器上,这些守护进程(apache、nginx 等)没有真正的“主目录”。
如果您考虑“虚拟主机”,那将是不可能的,因为每个用户只能有一个主目录,但每个守护进程有多个虚拟主机。
我猜你在找什么,是环境变量 DOCUMENT_ROOT(当前 vhost 文档的根目录)。
$_SERVER['DOCUMENT_ROOT']
【讨论】:
使用$_SERVER['HOME'] 或者你试试
$home = getenv("HOME");
注意:这需要您通过命令行执行脚本。
【讨论】:
$home = getenv("USERPROFILE")。