2010-01-31 96 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`;