2010-01-31 22 views
5

Kullanıcının giriş dizini (örneğin, /home/jack; temelde ne olursa olsun) PHP'de CGI (suPHP) kullanarak bir yol bulamıyorum. $ _ENV dizisi boş ve getenv ('HOME') hiçbir şey döndürmez. Çoğu Linux uygulamaları gibiPHP'deki kullanıcı ana dizini okuyun

ben bunu yapmak istiyorum nedeni, yapılandırma aksi demenin oid'in içinde, ben /home/user/.myappnamehere benim uygulama tarafından kullanılan değişken dosyaları bulmak istiyoruz olmasıdır.


Bir şey yaptım, ama en iyisi değil; Çalışır da, sistem hakkında çok şey (ör varlığını/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 deneyin? Bu bağlamda mevcut kullanıcı kim olacak? –

+1

SuPHP'den (ve ayrıca suexec ve diğer yollar ile), PHP işlemi betik (.php) dosyasının sahibi olan kullanıcı olarak çalıştırılır. –

+0

Çözümünüz ayrıca, komut dosyasını, kullanıcının yalnızca root yapması gereken dosyayı okumasına izin verdiği gibi çalıştığını varsayar. –

cevap

6
+1

Mükemmel. Windows eşdeğerini biliyor musunuz? –

+1

Pencerelerde hiç php programlama yapmamıştım, bu yüzden – kolbyjack

+0

Kullanım kılavuzuna baktıktan sonra W32api'yi (http://us.php.net/manual/en/w32api.examples- uptime.php) Windows'ta Belgelerim klasörünü almak için SHGetFolderPath (CSIDL_PERSONAL?) (http://msdn.microsoft.com/en-us/library/bb762181%28VS.85%29.aspx) ile birlikte – kolbyjack

4

gönderilen safemode devre dışı bırakılırsa, CGI kullanarak bu bir

$homedir = `cd ~ && pwd`; 
İlgili konular