2010-01-31 55 views
5

我无法找到在PHP中使用CGI(suPHP)获取用户主目录(例如/home/jack;无论bash指向哪里)的方法。 $ _ENV数组为空,getenv('HOME')不返回任何内容。从PHP读取用户主目录

我想这样做的原因是,在配置,否则由于缺少说,我想找到/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; 
     } 
    }
+0

使用CGI的PHP?在这种情况下,谁将成为当前用户? – 2010-01-31 21:54:15

+1

由于suPHP(以及suexec和其他任何方式),PHP过程以拥有脚本(.php)文件的用户身份运行。 – 2010-01-31 21:55:52

+0

你的解决方案还假定脚本运行的用户可以读取该文件,通常只有root用户才能执行该操作...... – 2010-01-31 22:31:20

回答

6
+1

完美。你碰巧知道Windows的等价物吗? – 2010-01-31 22:33:06

+1

我从来没有在windows上做过任何php编程,所以没有 – kolbyjack 2010-01-31 22:34:23

+0

看完手册后,您可以使用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 2010-01-31 22:40:49

4

如果safemode已禁用,请尝试这一个

$homedir = `cd ~ && pwd`;