2013-11-15 2 views
5

जब मैं सर्वर पर अपना वाईआईआई प्रोजेक्ट चलाता हूं, तो मुझे यह त्रुटि मिली।CAssetManager.basePath "/ संपत्ति" अमान्य है। कृपया सुनिश्चित करें कि निर्देशिका मौजूद है और वेब सर्वर प्रक्रिया द्वारा लिखने योग्य है।

CException 

CAssetManager.basePath "/var/www/html/v2/assets" is invalid. Please make sure the directory exists and is writable by the Web server process. 

/var/www/html/v2/yii/framework/web/CAssetManager.php(116) 

104  } 
105 
106  /** 
107  * Sets the root directory storing published asset files. 
108  * @param string $value the root directory storing published asset files 
109  * @throws CException if the base path is invalid 
110  */ 
111  public function setBasePath($value) 
112  { 
113   if(($basePath=realpath($value))!==false && is_dir($basePath) && is_writable($basePath)) 
114    $this->_basePath=$basePath; 
115   else 
116    throw new CException(Yii::t('yii','CAssetManager.basePath "{path}" is invalid. Please make sure the directory exists and is writable by the Web server process.', 
117     array('{path}'=>$value))); 
118  } 
119 
120  /** 
121  * @return string the base url that the published asset files can be accessed. 
122  * Note, the ending slashes are stripped off. Defaults to '/AppBaseUrl/assets'. 
123  */ 
124  public function getBaseUrl() 
125  { 
126   if($this->_baseUrl===null) 
127   { 
128    $request=Yii::app()->getRequest(); 

मुझे नहीं पता, इसे कैसे हल करें? कृपया इसका समाधान बताएं?

यह

assets 
protected <-- Yii app 
js 
css 
yii 
+1

से मेल खाएगी तो '/ var/www/html/v2/assets' तो यह है मौजूद है वेबसर्वर उपयोगकर्ता द्वारा लिखने योग्य नहीं। अगर '/ var/www/html/v2/assets' आपकी प्रोजेक्ट की 'संपत्ति' निर्देशिका नहीं है तो आपका एप्लिकेशन अनुचित रूप से कॉन्फ़िगर किया गया है। – Ezze

+0

अब मुझे क्या करना चाहिए? – unknownbits

+1

यदि निर्देशिका मौजूद है तो आपको लिखना चाहिए वेब सर्वर प्रक्रिया की अनुमति जैसे मैनेर ने लिखा था। इसके अलावा 'संरक्षित/रनटाइम' निर्देशिका बनाई जानी चाहिए और लिखने योग्य होना चाहिए। – Ezze

उत्तर

4

संपत्ति फ़ोल्डर अपने वेब सर्वर प्रक्रिया के द्वारा लिखने योग्य होना चाहिए मेरी परियोजना संरचना है। आमतौर पर यह डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया अपाचे पर www-data है। आप '+ w' अनुमति के साथ फ़ोल्डर समूह के लिए उपयोगकर्ता जोड़ सकते हैं या तो संशोधनों

वैकल्पिक रूप से सिर्फ अनुमतियों 777 को संशोधित रूप में संपत्ति फ़ोल्डर केवल अपने js और जिसमें से वैसे भी सार्वजनिक के संपर्क में आएंगे सीएसएस फ़ाइलें शामिल होंगी अपने रूट निर्देशिका

chmod 777 -R ./assets 

, आप कर सकते हैं (यदि एप्लिकेशन Yii प्रमाणन भूमिकाओं उपयोग करने के लिए कॉन्फ़िगर किया गया है ) तुम भी क्रम और डेटा/auth.php के साथ एक ही मुद्दा का सामना करना पड़ेगा वहाँ इसी तरह उपयुक्त संशोधनों के साथ-साथ

अद्यतन :: PHP < 5.4 के लिए अतिरिक्त सेटिंग्स आवश्यक है यदि सुरक्षित-मोड झंडे सेट किए गए हैं (यह 5.4 में गिरावट आई है) http://php.net/manual/en/ini.sect.safe-mode.php को अपने php.ini फ़ाइल में सुरक्षित-मोड सेटिंग्स को कॉन्फ़िगर करने के तरीके पर देखें। या तो आप झंडे को पूरी तरह से बंद कर सकते हैं या निर्देशिका में निर्देशिका को बाहर कर सकते हैं। (यह कदम की जरूरत नहीं है अगर आप अपने समूह के लिए www-डेटा (अपने वेब प्रक्रिया) को शामिल किया है के रूप में gid फिर स्वचालित रूप से

+1

बिग संयोग मेरे पास यह सही त्रुटि है और आपका उत्तर हाल ही में है। अनुमतियों को बदलना काम करता है लेकिन एक और त्रुटि हुई: 'प्रतिलिपि() [function.copy]: सुरक्षित मोड प्रतिबंध प्रभाव में। स्क्रिप्ट जिसका यूआईडी/गीड 21 9 804/21 9 804 नहीं है यूआईडी/गीड 25000/25000' के स्वामित्व में/f5//सार्वजनिक/संपत्ति/27ff0fb6 तक पहुंचने की अनुमति है। अजीब चीज यह है कि मेरे पास '27ff0fb6' –

+0

नामक एक संपत्ति उप-फ़ोल्डर नहीं है, आप PHP संस्करण <5.4 का उपयोग कर रहे हैं और अनुमतियों को अनुमति देते हुए यूआईडी (userId)/gid (groupId) की जांच के लिए सुरक्षित मोड झंडे भी सेट कर चुके हैं सिस्टम फ़ाइल अनुमति स्तर के अलावा। सुरक्षित मोड का उपयोग/कॉन्फ़िगर करने के तरीके के विवरण के लिए इस पृष्ठ का संदर्भ लें http://php.net/manual/en/ini.sect.safe-mode.php – Manquer

+1

@ धन्यवाद धन्यवाद यह काम करता है। – unknownbits

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