php - SwiftMailer 'ErrorException' with message 'fopen(/tmp/...) failed to open stream: Permission denied' -


मैंने laravel एप पर एक cpanel साझा मेजबान

ईमेल usign मेल वर्ग भेजते समय, निम्न त्रुटि बेतरतीब ढंग से होती है (कभी-कभी मेल भेजी जाती है लेकिन कभी-कभी त्रुटि आती है)

  उत्पादन। सर्वर: अपवाद 'त्रुटि एक्स्पेक्शन' संदेश के साथ 'एफओपीएएन (/ टीएमपी / ई 19839 एफ 1 ए 2 डी 67 ए 4 बी 7 सी 83 ए 5951 सी 31 बीएफडी / बॉडी): स्ट्रीम को खोलने में असफल: अनुमति अस्वीकृत '/home/ekbatana/laravel4/vendor/swiftmailer/swiftmailer/lib/classes/swift/keycache/diskkeycache.php:300 में   

मैंने मेजबान समर्थन से संपर्क किया था, उन्होंने कहा था कि मुझे बदलने की आवश्यकता है डिफ़ॉल्ट अस्थायी निर्देशिका।

SwiftMailer पैकेज में lib / preferences.php एक चर बुलाया $ tmp getenv ( 'TMPDIR' पर सेट है ) और फ़ाइल में एक टिप्पणी का कहना है कि:

  // आप टीएमपीडीआईआर परिवेश चर को सेट करके डिफ़ॉल्ट अस्थायी निर्देशिका को ओवरराइड कर सकते हैं।   

मैं स्थापित करने का प्रयास TMPDIR अलग अलग तरीकों से

1) .htaccess: setenv TMPDIR / घर / ... / laravel4 / ऐप्स / भंडारण / my_temp

2) में एप्लिकेशन / से पहले / global.php और भी अनुप्रयोग :: में शुरू कॉलबैक फ़ंक्शन का उपयोग कर php putenv समारोह

3) में lib / preferences.php से पहले लाइन है कि अस्थायी $ का उपयोग कर सेट किया गया है php putenv < / Code> फ़ंक्शन

लेकिन उन में से कोई भी फ़ाइल खोले जाने के कारण पथ बदलता है और कारण बनता है स्ट्रीम को खोलने में विफल: अनुमति अस्वीकृत त्रुटि

निम्न swiftmailer / lib / preferences.php

  & lt;? Php / ******************** ************************************************** ******* / / * * / / * यदि आप संशोधित या निम्नलिखित लाइनों जो चूक * / / * * / / सेट निकाल करना चाह सकते हैं **************** ************************************************** ********** / $ प्राथमिकताओं = स्विफ्ट_Preferences :: getInstance (); // डिफ़ॉल्ट वर्णसेट सेट करता है ताकि सेटसेटसेट () की कहीं और की आवश्यकता नहीं है- preferences- & gt; setCharset ('utf-8'); // इन लाइनों के बिना डिफ़ॉल्ट कैशिंग तंत्र "सरणी" है लेकिन यह बहुत मेमोरी का उपयोग करता है // यदि संभव हो तो, बड़े अनुलग्नक आदि को सक्षम करने के लिए डिस्क कैश का उपयोग करें। // आप टीएमपीडीआईआर पर्यावरण चर सेट करके डिफ़ॉल्ट अस्थायी निर्देशिका को ओवरराइड कर सकते हैं। // is_writable कॉल के सामने @ ऑपरेटर PHP के चेतावनियों से बचने के लिए / जब open_basedir $ tmp = getenv ('TMPDIR') का प्रयोग किया जाता है; अगर ($ tmp & amp; amp;; _wr_writable ($ tmp)) {$ वरीयताएँ - & gt; सेटमेटडिम ($ tmp) - & gt; सेटकैचेटाइप ('डिस्क'); } अन्यथा (function_exists ('sys_get_temp_dir') और amp; @is_writable (sys_get_temp_dir ())) {$ वरीयताएँ - & gt; सेटटैंपडीर (sys_get_temp_dir ()) - & gt; सेटकैचेटाइप ('डिस्क'); } // यह केवल तभी किया जाना चाहिए जब स्विफ्टमैल्डर देशी क्यूपी सामग्री एन्कोडर का उपयोग नहीं करेगा // देखें mime_deps.php अगर (version_compare (phpversion (), '5.4.7', '& lt;')) {$ preferences- & gt ; setQPDotEscape (गलत); }    

आपको यह जांचना है कि निर्देशिका को लिखने की कोशिश कर रही है निर्देशिका। आप यह सत्यापित कर सकते हैं कि कौन सी उपयोगकर्ता और समूह क्रियान्वित कर आपकी प्रक्रिया द्वारा उपयोग किया जाता है:

  & lt;? Php echo getmyuid ()। ':'। ? & Gt;   

यह आपको उपयोगकर्ता: समूह जैसा कुछ देगा। तो फिर आप की जरूरत करने के लिए chown निर्देशिका में लिखने के लिए के साथ:

  chown आर उपयोगकर्ता: समूह writable_directory /    < / html>

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -