2010-01-31 3 views
5

CGI (suPHP)를 사용하여 PHP에서 사용자의 홈 디렉토리 (예 : /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

PHP는 CGI를 사용합니까? 그 맥락에서 현재 사용자는 누구입니까? –

+1

suPHP (suexec 및 기타 다른 방법이 있기 때문에) PHP 프로세스는 스크립트 (.php) 파일을 소유 한 사용자로 실행됩니다. –

+0

당신의 솔루션은 또한 스크립트가 실행되는 사용자가 파일을 읽을 수 있도록 허용합니다. 보통 root만이 할 수 있어야합니다 ... –

답변

6
+1

완벽. Windows와 동일한 기능을 알고 있습니까? –

+1

Windows에서 PHP 프로그래밍을 한 번도 해 본 적이 없습니다. – kolbyjack

+0

매뉴얼을 조금보고 나면 W32api (http://us.php.net/manual/en/w32api.examples- Windows에서 내 문서 폴더를 가져 오려면 SHGetFolderPath (CSIDL_PERSONAL?) (http://msdn.microsoft.com/en-us/library/bb762181%28VS.85%29.aspx)와 함께 uptime.php – kolbyjack

4

로 전송 safemode이 사용 중지 된 경우

$homedir = `cd ~ && pwd`; 
관련 문제