从PHP读取用户主目录

5
我无法在使用CGI(suPHP)的PHP中找到获取用户主目录(例如/home/jack;bash中指向任何地方)的方法。 $_ENV数组为空,并且getenv('HOME')什么也没有返回。
我想这样做的原因是,在缺少其他配置的情况下,我希望在/home/user/.myappnamehere中找到应用程序使用的变量文件,就像大多数Linux应用程序一样。
我已经构建了一些东西,但它并不是最好的;虽然它可以工作,但它对系统做出了很多假设(例如/etc/passwd的存在)。
 $usr = get_current_user();
    $passwd = file('/etc/passwd');
    $var = false;
    foreach ($passwd as $line) {
        if (strstr($line, $usr) !== false) {
            $parts = explode(':', $line);
            $var = realpath($parts[5].'/.report');
            break;
        }
    }

PHP使用CGI?在这种情况下,当前用户会是谁? - Pekka
1
由于suPHP(以及suexec和其他任何方式),PHP进程将作为拥有脚本(.php)文件的用户运行。 - Bart van Heukelom
你的解决方案还假设脚本运行的用户被允许读取文件,而通常只有root才能这样做... - Dan Soap
在我的Ubuntu 9.04服务器上,该区域没有特殊配置,/etc/passwd的模式为-rwxr--r--,因此每个人都可以读取。这是正常的,因为许多应用程序需要访问它进行身份验证等操作。 - Bart van Heukelom
2个回答

6

1
完美。你知道有没有Windows的等效物吗? - Bart van Heukelom
在浏览了一些手册后,您可以尝试使用W32api(http://us.php.net/manual/en/w32api.examples-uptime.php)以及SHGetFolderPath(CSIDL_PERSONAL?)(http://msdn.microsoft.com/en-us/library/bb762181%28VS.85%29.aspx)来获取Windows上的“我的文档”文件夹。 - kolbyjack

4
如果已禁用安全模式,请尝试这个。
$homedir = `cd ~ && pwd`;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接