2011-06-22 8 views
7

एक फ़ाइल को सहेजते समय फ़ाइल अनुमतियों को अबाउट करते हैं, जब मौजूद नहीं है, प्रारंभ में नई फ़ाइल के रूप में बनाया जाता है।फ़ाइल अनुमतियां और CHMOD: फ़ाइल निर्माण पर PHP में 777 कैसे सेट करें?

अब, यह सब ठीक हो जाता है, और सहेजी गई फ़ाइल में मोड 644 होता है।

फ़ाइलों को मोड 777 के रूप में सहेजने के लिए मुझे यहां क्या करना है?

किसी भी संकेत, सुराग या उत्तरों के लिए धन्यवाद।

/* write to file */ 

    self::writeFileContent($path, $value); 

/* Write content to file 
* @param string $file Save content to wich file 
* @param string $content String that needs to be written to the file 
* @return bool 
*/ 

private function writeFileContent($file, $content){ 
    $fp = fopen($file, 'w'); 
    fwrite($fp, $content); 
    fclose($fp); 
    return true; 
} 
+2

ध्यान दें कि 0777 मोड ** खतरनाक ** है। Http://stackoverflow.com/questions/2338641/in-a-php-apache-linux-context-why-exactly-is-chmod-777- खतरनाक –

+0

@Phoenix धन्यवाद देखें। मैं guese 0766 पर्याप्त होगा (सभी लेखन अनुमतियों के लिए अनुमति देने की आवश्यकता है)। क्या वो बेहतर है? – Sam

+1

0766 बेहतर है; जो मनमाने ढंग से कोड निष्पादन को रोक देगा। क्या फ़ाइल ** दुनिया ** लिखने योग्य होने की आवश्यकता है, या अगर यह केवल उदाहरण के लिए पर्याप्त होगा, तो अपाचे इसे लिख सकता है? क्या आपके पास ऐसे अनुप्रयोगों का एक सेट है जिन्हें इन फ़ाइलों को लिखने में सक्षम होना चाहिए? क्या होगा यदि आपने उन्हें एक ही समूह के रूप में चलाया और 0764 मोड सेट किया? –

उत्तर

18

पीएचपी एक कहा जाता bool chmod(string $filename, int $mode)

http://php.net/function.chmod

private function writeFileContent($file, $content){ 
    $fp = fopen($file, 'w'); 
    fwrite($fp, $content); 
    fclose($fp); 
    chmod($file, 0777); //changed to add the zero 
    return true; 
} 
+8

_Don't_ 777 का उपयोग करें, यह _decimal_ संख्या है और आप जो चाहते हैं उसे कुछ भी नहीं :-) – paxdiablo

+3

@paxdiablo धन्यवाद! – thescientist

+0

क्या यह एक सुरक्षा जोखिम है? अगर फ़ाइल अनुमति 777 है, तो हमलावर सिस्टम में फ़ाइल अपलोड करने के लिए "PUT" विधि का उपयोग कर सकता है? क्या मै गलत हु? आपके उत्तर के अनुसार, मैं आपके समाधान का उपयोग करूंगा। – Hasan

4

तुम बस मैन्युअल रूप से chmod() साथ वांछित अनुमतियाँ निर्धारित करने की आवश्यकता समारोह में बनाया गया है: कोड है कि मुझे लगता है कि यहाँ मैं शामिल किया है प्रासंगिक है :

private function writeFileContent($file, $content){ 
    $fp = fopen($file, 'w'); 
    fwrite($fp, $content); 
    fclose($fp); 

    // Set perms with chmod() 
    chmod($file, 0777); 
    return true; 
} 
+1

वैज्ञानिक को मेरी टिप्पणी देखें - सही मास्क ** 0777 ** 777 नहीं है। – paxdiablo

+1

@paxdiablo बदलें। मैं पूरे दिन यूनिक्स कमांड लाइन पर खर्च करता हूं और विशेष बिट्स को छोड़ने के लिए उपयोग करता हूं। –

2

यदि आप किसी मौजूदा फ़ाइल की अनुमतियों को बदलने के लिए, chmod (परिवर्तन मोड) का उपयोग करना चाहते हैं:

$itWorked = chmod ("/yourdir/yourfile", 0777); 

आप सभी नई फ़ाइलों कुछ अनुमतियों करना चाहते हैं, तो आप अपने umode स्थापित करने में देखने की जरूरत है। यह एक प्रक्रिया सेटिंग है जो मानक मोड में डिफ़ॉल्ट संशोधन लागू करती है।

यह एक घटिया है। इसके द्वारा, मेरा मतलब है 022 आपको 755 (777 - 022 = 755) की डिफ़ॉल्ट अनुमति देगा।

लेकिन आपको बहुत ध्यान से दोनों इन विकल्पों को ध्यान से सोचना चाहिए। उस मोड के साथ बनाई गई फ़ाइलें परिवर्तन से पूरी तरह से असुरक्षित होंगी।

+1

'0755'। '755' नहीं। –

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