2010-02-07 16 views
6

में काम नहीं कर रहा है इस पर पिछले 2 घंटों के लिए मेरे बालों को खींच रहा है और मुझे यकीन है कि मैं वास्तव में कुछ बेवकूफ कर रहा हूं।mkdir PHP

<?php 
mkdir("blah", 0777); 
?> 

यह कमांड लाइन के माध्यम से काम करता है और फ़ोल्डर बनाया जाता है। लेकिन जब मैं ब्राउज़र के माध्यम से इसे चलाने की कोशिश करता हूं तो वही काम काम नहीं करता है। कोई फ़ाइल अनुमति मुद्दों?

+0

मैं लंबे समय से इस के साथ अटक गया था, किसी और के लिए। यदि आप SELinux पर हैं तो "सुरक्षा संदर्भ" नामक अनुमतियों की एक अतिरिक्त परत है जिसे आप 'ls -alZ' के साथ देख सकते हैं। 'chcon system_u: object_r: httpd_sys_content_t: s0 public_HTML' – changokun

उत्तर

11

क्या संभवतः यह हो सकता है कि कमांड लाइन के तहत चलते समय, स्क्रिप्ट को आपकी अनुमतियां मिलती हैं, लेकिन ब्राउज़र से चलते समय यह नहीं होता है?

उस स्थिति में आप समूह के लिए अपनी निर्देशिका अनुमतियां 'लिखना' बनाना चाहते हैं।

+4

हाहा जैसे कुछ का उपयोग करें! 10,000 प्रतिष्ठा! हुज़्ज़ाह! –

3

आपके वेब सर्वर (अपाचे?) चल रहा है के रूप में यह स्वयं के उपयोगकर्ता है, और निर्देशिका आप में mkdir चला रहे हैं करने के लिए लिखने की अनुमति नहीं देता है।

लिखने के लिए आपको अपने वेब सर्वर उपयोगकर्ता की अनुमति दें या तो ए द्वारा निर्देशिका ए) इसे मालिक बनाते हुए, बी) समूह को लिखने की अनुमति है, या समूह को जोड़ने के लिए समूह को जोड़ना) सी) सभी को लिखने की अनुमति दें (अधिकांश सेटअप के लिए अनुशंसित नहीं)।

+0

एक ही समस्या थी, हल हो गया! मैंने पहली बार एफ़टीपी के साथ एक फ़ोल्डर बनाया, जब इसके अंदर फ़ोल्डरों को बनाने के लिए mkdir का उपयोग करना काम नहीं किया। फ़ोल्डर को हटाने और सुनिश्चित करने के लिए कि स्क्रिप्ट बनाता है इसे हल करता है। – Pedro

0

आप umask के साथ प्रयास कर सकते हैं, जब PHP सर्वर सर्वर के रूप में उपयोग किया जा रहा है, तो प्रत्येक अनुरोध समाप्त होने पर उमास्क बहाल किया जाता है।

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
संबंधित मुद्दे