2011-01-03 26 views
6

Smarty अनुमतियों के बारे में शिकायत कर रहा है। मैंने एक परियोजना के लिए एक छोटा एमवीसी फ्रेमवर्क लिखा है जिस पर मैं काम कर रहा हूं और मुझे प्रत्येक नियंत्रक में टेम्पलेट्स प्रस्तुत करने में सक्षम होना चाहिए। मैं आगे बढ़ गया और Smarty स्थापना निर्देशों का पालन किया, और मेरे "फ्रंट कंट्रोलर" में सभी कॉन्फ़िगरेशन विकल्पों को सेट किया, या वह पृष्ठ जो शेष एप्लिकेशन को अनुरोध करता है। Testinstall फ़ंक्शन का कहना है कि सब कुछ कोशेर है, फिर भी जब मैं अपने नियंत्रकों में टेम्पलेट्स प्रस्तुत करने का प्रयास करता हूं, तो मैं इसके साथ समाप्त होता हूं।Smarty अनुमति समस्याओं

चेतावनी: mkdir(): अनुमति /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php में से इनकार पर लाइन 28 चेतावनी: नाम बदलने (/ tmp/। wrt6piczo,/templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php): ऐसी कोई फ़ाइल या में निर्देशिका /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php लाइन पर 48 चेतावनी: chmod(): /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_write_file.php लाइन 50 पर फ़ाइल या निर्देशिका कोई चेतावनी नहीं: (./ templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php) में शामिल हैं: ऐसी कोई फ़ाइल या /var/www/HRTRL/शामिल/CallLog/lib/चतुर/libs/sysplugins में निर्देशिका: स्ट्रीम को खोलने में विफल रहा है /smarty_internal_template.php लाइन पर 423 चेतावनी: शामिल किए जाने (include_path = 'के लिए विफल उद्घाटन ' ./templates_c/73b1662b4c376f493278f9873564df03430a0b43.file.poopy.tpl.php ' : शामिल हैं()।/usr/share/php:/usr/ /var/www/HRTRL/includes/CallLog/lib/Smarty/libs/sysplugins/smarty_internal_template.php में लाइन पर शेयर/नाशपाती ') 423

मैंने अपने बाकी ढांचे का स्वतंत्र रूप से परीक्षण किया है और सब कुछ काम करने लगता है। मेरा "फ्रंट कंट्रोलर" मार्ग सही नियंत्रकों को सही तरीके से अनुरोध करता है, और मैं नियमित एचटीएमएल को ठीक से प्रस्तुत करने में सक्षम हूं।

इसके अतिरिक्त, मैंने परीक्षण के लिए केवल सभी स्मार्ट लाइब्रेरी फ़ोल्डरों के साथ-साथ अन्य आवश्यक निर्देशिकाओं को 777 पर chmodded किया है। मुझे अभी भी वही अनुमति त्रुटियां मिल रही हैं।

संपादित

ये सेटिंग्स मैं सभी आवश्यक चतुर फ़ोल्डरों के लिए उपयोग किया है रहे हैं।

$smarty->setTemplateDir('lib/smarty/templates'); 
$smarty->setCompileDir('lib/smarty/templates_c'); 
$smarty->setCacheDir('lib/smarty/cache'); 
$smarty->setConfigDir('lib/smarty/configs'); 
+2

क्यों आप चतुर उपयोग करने के लिए करना चाहते हैं? क्यों न केवल PHP का उपयोग करें (और इन परेशानियों से खुद को बचाएं)? – ircmaxell

+3

अंतिम परिणाम डिजाइनर अनुकूल होना चाहिए। मैं खुद को सभी विचारों को डिजाइन करने की संभावना नहीं रखूंगा। –

+0

आपने smarty compile_dir को क्या सेट किया है? क्या वेब सर्वर को वहां लिखने की अनुमति है? – James

उत्तर

4

क्या यह सापेक्ष पथों में समस्या हो सकती है? क्या आप **** डिर फ़ंक्शंस सेट करने के लिए पूरा पथ जोड़ सकते हैं, इसलिए आप सुनिश्चित होंगे कि आप सही स्थानों का उपयोग कर रहे हैं।

यदि आप इसे /specialdir/thisdirhasonlyaPHPfile/file.php स्थान से कॉल करते हैं, तो आपको परेशानी हो सकती है।

-2

बस index.php फ़ाइल से निम्न पंक्ति पर टिप्पणी करें।

$smarty->caching = true; 

इससे आपकी समस्या हल हो जाएगी।

-1

आपको फिर से लिखने के लिए एक्सेस अनुमति की जांच करनी चाहिए। मुझे एक ही त्रुटि थी, इसलिए मैंने 'templates_c' फ़ोल्डर के लिए 777 पर अनुमतियां सेट की हैं और इसके अंदर कुछ भी है और अब यह काम करता है। हालांकि मुझे इस ऑपरेशन को फाइलज़िला में 3 बार दोहराना पड़ा, पता नहीं क्यों उसने एक बार में अनुमतियों को नहीं बदला।

+1

इससे मेरी मदद की। धन्यवाद! –

5

उचित अनुमतियाँ मेरे लिए इसे हल:

chown -R www-data /var/www/HRTRL 
-1

documentation के अनुसार, 'template_c' फ़ोल्डर की अनुमति 775. होना चाहिए लेकिन यह कुछ समय काम नहीं करता। आपको इसकी अनुमति 777 पर सेट करनी होगी।

+0

मैं देखता हूं कि क्यों 775 काम नहीं करता है क्योंकि यह आपकी परियोजना में किसी फ़ाइल/फ़ोल्डर के लिए सबसे कम अनुमति होनी चाहिए और यही कारण है कि प्रलेखन 775 और 777 नहीं है। –

0

उपर्युक्त सभी (निम्नलिखित कॉन्फ़िगरेशन/चाउन/chmod आदि जांचना) के बाद Smarty के साथ अनुमति समस्याओं से निपटने के लिए किसी और के लिए हम एसई पर Smarty चलाने के दौरान एक समस्या आई (सुरक्षा बढ़ाया) लिनक्स।

संकलन/कैश निर्देशिका ~/tmp निर्देशिका के अंदर उप-निर्देशिकाएं थीं।

डिफ़ॉल्ट लक्ष्यीकरण नीति tmp निर्देशिकाओं को लिखती है।

आप संदर्भ/नीतियों को अद्यतन करने के लिए वीर्येज का उपयोग कर सकते हैं। आपको httpd_sys_rw_content_t संदर्भ को उस निर्देशिका में असाइन करने के लिए एक नई नीति बनाने की आवश्यकता होगी, जिस पर आपके वेब-ऐप को भी लिखना होगा।

अधिक जानकारी: http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/ टी

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