PHP

2010-01-31 21 views
5

से उपयोगकर्ता होम निर्देशिका पढ़ें मुझे उपयोगकर्ता की होम निर्देशिका (उदा। /घर/जैक; सीजीआई (एसयूपीएचपी) का उपयोग करके PHP में जो भी ~ बैश पॉइंट्स में) प्राप्त करने का कोई तरीका नहीं मिल रहा है। $ _ENV सरणी खाली है, और getenv ('HOME') कुछ भी नहीं देता है।PHP

कारण मैं ऐसा करना चाहते हैं कि विन्यास अन्यथा कह के अभाव में, मैं /home/user/.myappnamehere में चर अपने आवेदन के द्वारा प्रयोग किया फ़ाइलों को ढूंढना चाहते हैं, सबसे लिनक्स अनुप्रयोगों करते हैं।


मैंने कुछ बनाया है, लेकिन यह सबसे अच्छा नहीं है; हालांकि यह काम करता है, यह सिस्टम के बारे में बहुत (जैसे की उपस्थिति/etc/पासवर्ड)

$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? उस संदर्भ में वर्तमान उपयोगकर्ता कौन होगा? –

+1

suPHP (और सुएक्सैक के साथ और जो भी अन्य तरीके हैं) के कारण PHP प्रक्रिया उस उपयोगकर्ता के रूप में चलायी जाती है जो स्क्रिप्ट (.php) फ़ाइल का मालिक है। –

+0

आपका समाधान यह भी मानता है कि उपयोगकर्ता स्क्रिप्ट को फ़ाइल को पढ़ने की अनुमति के रूप में चलाता है, जो मानक केवल रूट करने में सक्षम होना चाहिए ... –

उत्तर

6

मुझे लगता है कि आप का परिणाम चाहते हो जाती है या तो: http://us.php.net/manual/en/function.getmyuid.php या http://us.php.net/manual/en/function.posix-getuid.php http://us.php.net/manual/en/function.posix-getpwuid.php

+1

बिल्कुल सही। क्या आपको विंडोज़ समकक्ष पता है? –

+1

मैंने कभी भी विंडोज़ पर कोई PHP प्रोग्रामिंग नहीं किया है, इसलिए – kolbyjack

+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) विंडोज़ पर मेरा दस्तावेज़ फ़ोल्डर प्राप्त करने के लिए – kolbyjack

4

के लिए भेजा यदि safemode अक्षम है, तो इसे एक

$homedir = `cd ~ && pwd`;