2010-01-12 18 views
7

रिकर्सिव फ्लैग सेट के साथ mkdir() का उपयोग करते समय सभी बनाई गई निर्देशिकाओं को निर्दिष्ट chmod या केवल अंतिम मिलता है? उदाहरण के लिए:रिकर्सिव mkdir() और chmod()?

mkdir('/doesnotExist1/doesnotExist2/doesnotExist3/', 0755, true); 

नव निर्मित निर्देशिका /doesnotExist1/ और /doesnotExist1/doesnotExist2/ भी /doesnotExist1/doesnotExist2/doesnotExist3/ = 0755 के रूप में ही chmod हो जाएगा?

यदि नहीं, तो पर कोई तरीका नहीं है उपरोक्त व्यवहार पर बल?

मैं इसे स्वयं जांचता हूं, लेकिन मेरे पास * निक्स बॉक्स एटीएम तक पहुंच नहीं है।

+0

निश्चित रूप से यह सर्वरफॉल्ट पर है? –

+2

@ILMV: नहीं; यह PHP के बारे में है। –

+2

@ILMV - यह PHP के 'mkdir' के बारे में एक सवाल है, इसलिए मुझे ऐसा नहीं लगता है। –

उत्तर

7

PHP 5.2.12 के साथ gentoo linux पर बस परीक्षण किया गया: उन सभी के पास समान अनुमतियां हैं।

[email protected]:~$ php -a 
Interactive shell 

php > mkdir('asd/def/ghi', 0700, 1); 
php > ^C 
[email protected]:~$ ls -hal asd 
total 12K 
drwx------ 3 soulmerge soulmerge 4.0K 2010-01-12 10:32 . 
drwxr-xr-x 79 soulmerge soulmerge 4.0K 2010-01-12 10:32 .. 
drwx------ 3 soulmerge soulmerge 4.0K 2010-01-12 10:32 def 
+0

वह तेज़ था, धन्यवाद! Glad PHP ऐसा करने के लिए पर्याप्त स्मार्ट है। =) –

3

सी समारोह mkdir ('localfilesystem', एक्स, सही) के लिए जिम्मेदार मुख्य/धाराओं/plain_wrapper.c में php_plain_files_mkdir() है। और यह सभी उपनिर्देशिकाओं के लिए "पहली" निर्देशिका बनाने और VCWD_MKDIR(buf, (mode_t)mode)) के लिए php_mkdir(dir, mode TSRMLS_CC); पर कॉल करता है। php_mkdir() कुछ सुरक्षित मोड जांच करता है और फिर VCWD_MKDIR भी कॉल करता है तो हाँ, मोड पैरामीटर mkdir (p, x, true) द्वारा बनाई गई सभी निर्देशिकाओं के लिए उपयोग किया जाता है।

संबंधित मुद्दे