2010-06-24 32 views
8

मेरे कोडmkdir() काम नहीं कर रहा

mkdir("/some/absolute/path",0777); 

और

mkdir("relative/path", 0777); 

काम नहीं कर रहा, सुरक्षित मोड बंद कर दिया है, और मैं भी 777 करने के लिए माता पिता के डर के सभी स्थापित करने की कोशिश की है।

कोई विचार?

संपादित करें: मुझे त्रुटि रिपोर्टिंग चालू है, मेरी निराशा में मैंने यह सुनिश्चित करने के लिए पूरे पथ को 777 किया है, यह मुद्दा नहीं है। यह कुछ बेवकूफ सरल चल रहा है।

संपादित करें संपादित करें: सुझावों के साथ प्रतिक्रिया देने वाले सभी के लिए उपरोक्त ... लेकिन मैं अभी भी इसका समाधान नहीं कर रहा हूं क्योंकि यह अभी भी हल नहीं हुआ है, लेकिन फिर मुझे लगता है कि यह उन लोगों में से एक होगा हमेशा के लिए खुला

संपादित करें x 3: तो मेरे पास इस प्रश्न के लिए सबसे असंतोषजनक समाधान है ... मैंने एक स्वच्छ वीएम छवि के साथ शुरुआत की, इसे पुनः प्रयास किया और अब यह काम करता है। कोई मजाक नहीं।

+4

यह किस त्रुटि में वापस आता है? – enricog

+0

कोई नहीं, यह सिर्फ यह काम करता है और किसी भी त्रुटि को थूकता नहीं है। मैंने यह भी देखने की कोशिश की कि क्या यह किसी भी तरह गलती से नई निर्देशिका को कहीं और रख रहा था और मुझे कहीं भी मिल सकता है। –

+5

कुछ चीजें: क्या इस कोड को चलाने वाली प्रक्रिया में मूल निर्देशिका में लिखने की अनुमति है? यदि आप इसे वेब सर्वर के माध्यम से चला रहे हैं, तो क्या आपने त्रुटि संदेशों के लिए लॉग की जांच की है? – GreenMatt

उत्तर

0

आप पथ नाम पैरामीटर के चारों ओर उद्धरण खो रहे हैं।

+0

कोड वास्तव में उसमें है ... मेरी निराशा में खेद है कि मैं इसे जोड़ना भूल गया, मैं एक संपादन कर दूंगा। कोई अन्य विचार? –

+0

सुनिश्चित करें कि आपको त्रुटि रिपोर्टिंग चालू हो गई है ताकि आप देख सकें कि फ़ंक्शन को कॉल करते समय यह कोई चेतावनी देता है या नहीं। –

+43

यह उत्तर क्यों स्वीकार किया गया है? – fartagaintuxedo

13

क्या सभी मूल निर्देशिका मौजूद हैं?

यदि नहीं, तो प्रत्यावर्तन सक्षम करने के लिए (यहाँ PHP5 कल्पना करते हुए) की आवश्यकता होगी:

mkdir('/path/to/your/dir',0777,true); 

संपादित करें: छिपी हुई टिप्पणी करते हुए कहा कि var से हर निर्देशिका नीचे विश्व लिखने योग्य करने के लिए स्थापित किया गया था नहीं देखा, इसलिए मैं निर्देशिका पथ को सट्टा कर रहा हूं और उपर्युक्त सहायक नहीं होगा। माफ़ कीजिये!

+0

यह सब अच्छा है, मुझे ऐसा होने से डर था इसलिए मैंने मूल प्रश्न में एक संपादन किया। –

+0

यह मेरे लिए काम करता है। आपका बहुत बहुत धन्यवाद! –

+0

सात साल का पुराना जवाब देखने में अच्छा लगा अभी भी लोगों की मदद करता है! – ajm

-3

आप उद्धरण में विशेषता रखना चाहिए:

mkdir('path/to/your/dir','0777'); 
+8

नहीं, '$ मोड' पैरामीटर को ऑक्टल इंट के रूप में परिभाषित किया गया है, इसलिए आपको ** इसके चारों ओर उद्धरण नहीं देना चाहिए। – jordanstephens

+0

मैं इस तरह से एक निर्देशिका बनाते हैं। और सभी काम। – pltvs

2

आप की तरह आप mkdir -p कमांड लाइन पर के साथ क्या होता है, रिकर्सिवली उन निर्देशिकाओं बनाने का प्रयास कर रहे हैं? यदि ऐसा है, तो पर तीसरे पैरामीटर के रूप में true निर्दिष्ट करें।

और पिछले सुझावों को प्रतिबिंबित करने के लिए, कृपया जो त्रुटि संदेश आप प्राप्त कर रहे हैं उसे निर्दिष्ट करें। यदि आपको कोई भी नहीं मिल रहा है, तो अपने कॉल से पहले इसका उपयोग करें: error_reporting(-1); // ALL messages और ini_set('display_errors', 'On');

+0

स्क्रिप्ट की शुरुआत में मेरे पास बहुत अधिक कोड था। -1 के बजाय इसके अलावा मुझे यह था। क्या यह -1 होना चाहिए? मेरे पास ini_set ('display_errors', 1) था; त्रुटि_ रिपोर्टिंग (E_ALL | E_STRICT) क्या मुझे इसके बजाय -1 का उपयोग करना चाहिए? 1 ने त्रुटियों को प्रदर्शित करने में अतीत में हमेशा काम किया है। –

+0

यह थोड़ा सा मुखौटा है, इसलिए -1 अनिवार्य रूप से हस्ताक्षर किए गए int के लिए "सभी बिट्स सेट" जैसा ही है। प्रभाव वही होगा। यदि, कुछ भविष्य के संस्करण में, वे एक और 'E_XXX' स्थिरता जोड़ते हैं जो 'E_ALL' में शामिल नहीं है,' -1' इसे वैसे भी शामिल करेगा। मूल रूप से आप जो पसंद करते हैं उस पर निर्भर करता है। – janmoesen

0

क्या आपने सबसे कम से कम परीक्षण संभव प्रयास किया है?

mkdir ('निर्देशिका', 0777);

इस मैं 0755 की तरह एक मानक CHMOD साथ बनाने की कोशिश करेंगे काम नहीं करता है

अगर यह मैं काम नहीं करते (यह एक पूरी तरह से यादृच्छिक अनुमान है, हो सकता है सर्वर PHP के माध्यम से 0777 बनाने की अनुमति नहीं होगी) कहेंगे कि सर्वर को शायद अलग सेटअप/php नहीं करता है 'फ़ोल्डर पर writting सही दाढ़ी, शायद आप अपने मेजबान प्रदाता से पूछ सकते हैं?

1

मुझे एक ही समस्या है और मुझे पता चला है कि मेरे पास खाली स्थान मेरे ड्राइव पर छोड़ा गया है। कमांड df (लिनक्स पर) के साथ जांचें कि आपका ड्राइव कितना भरा है। यह संभव है कि रूट को इस स्थिति में फाइलें और फ़ोल्डर्स बनाने की अनुमति है, क्योंकि उसके पास पूर्व-आरक्षित स्थान है।यदि आप कमांड लाइन से root उपयोगकर्ता के रूप में स्क्रिप्ट चलाते हैं - इसमें कोई त्रुटि नहीं है, लेकिन यदि आपकी स्क्रिप्ट apache द्वारा चलायी जाती है, तो त्रुटि उत्पन्न होती है।

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