2014-07-14 7 views
6

मैं अपने समस्या का वर्णन करने की कोशिश करेंगे:Mailcatcher: PHP मेल() फ़ंक्शन झूठी

स्थानीय वातावरण में बाहर जाने वाले ईमेल डिबग करने के लिए मैं mailcatcher (http://mailcatcher.me/) स्थापित है लेकिन वेब से भेजे गए पकड़ने मेल के साथ कुछ समस्याओं का सामना करना पड़ा। अगर मैं स्क्रिप्ट चलाता हूं जिसमें केवल एक मेल() कॉल होता है, तो सब ठीक है और मैं मेलकैचर 127.0.0.1:1080 में भेजे गए ईमेल को देख सकता हूं। लेकिन जब मैं वेब ब्राउज़र से एक ही स्क्रिप्ट तक पहुंचने का प्रयास करता हूं, तो मेल() फ़ंक्शन झूठा रिटर्न देता है, ब्राउज़र में कोई भी त्रुटि प्रदर्शित नहीं होती है, त्रुटि लॉग में कुछ भी नहीं। मेल लॉग में भी मैं मेल() फ़ंक्शन के लिए कॉल देख सकता हूं।

मुझे यकीन नहीं है, मेरा nginx/php-fpm कॉन्फ़िगरेशन गलत है, या अनुमतियों के साथ कुछ गलत हो सकता है।

सेलिनक्स अक्षम है।

यदि आप समाधान जानते हैं तो कृपया मदद करें।

अग्रिम

+0

आप अपनी टेस्ट स्क्रिप्ट मैन्युअल रूप से कैसे चला रहे हैं? कमांड लाइन? ध्यान दें कि PHP में आमतौर पर TWO .ini फ़ाइलें होती हैं: कमांड लाइन + वेब-सर्वर एम्बेडेड। यदि आपने CLI .ini फ़ाइल में मेलकैचर कॉन्फ़िगर किया है, तो जब आप वेबसर्वर (एसएपीआई मोड) के माध्यम से चल रहे हों तो यह काम नहीं करेगा। –

+0

मैंने लिखा, मैं दोनों तरीकों से चलाता हूं, कमांड लाइन में यह काम करता है, वेब से नहीं। php.ini के साथ सब कुछ ठीक है, कम से कम phpinfo() कॉल मुझे दोनों मामलों के लिए निम्न प्राप्त करता है: sendmail_path \t/usr/bin/env catchmail – user1112057

+0

मुझे बिल्कुल वही समस्या है। क्या आप समाधान ढूंढने में कामयाब रहे? – gadelkareem

उत्तर

5

धन्यवाद मैं Ubuntu 14.04 पर एक ही समस्या का सामना करना पड़ा।

/etc/php5/cli/php.ini और /etc/php5/fpm/php.ini समान sendmail_path कॉन्फ़िगरेशन था लेकिन केवल php-cli ईमेल भेज सकता था।

मेरे पर्यावरण के लिए, Mailcatcher एक दूरस्थ सर्वर पर काम करता है और मैं इसे संपर्क करने के लिए catchmail कमांड का उपयोग करता हूं।

यहाँ sendmail_path मैं प्रयोग किया जाता है:

sendmail_path = /usr/bin/env /usr/local/bin/catchmail --smtp-ip mailcatcher -f [email protected] 
+0

क्या आपने अनुमतियों के साथ कुछ बदल दिया क्योंकि पूर्ण पथ के साथ भी PHP-FPM अभी भी कैचमेल चलाने में सक्षम नहीं है! – gadelkareem

1

php के साथ:

sendmail_path = /usr/bin/env catchmail --smtp-ip mailcatcher-ip -f [email protected] 

fpmphp.ini फ़ाइल के लिए, मैं मेल समारोह ठीक से कार्य करने के लिए catchmail का पूर्ण पथ निर्दिष्ट करने के लिए किया था -fpm यह आरवीएम (?) की आपूर्ति की गई रैपर स्क्रिप्ट के साथ साफ काम करता है।

sendmail_path = /usr/local/rvm/wrappers/default/catchmail 
+0

जब हमारी होस्टिंग कंपनी ने 5.3.3 से 5.4.40 तक PHP अपडेट किया "/ usr/bin/env/usr/local/bin/catchmail" अब काम नहीं किया है।रैपर समाधान इसे ठीक किया गया। – Ben

0

CentOS 7 पीएचपी 5.6 के साथ PHP-एफ पी एम का उपयोग करते हुए, मैंने पाया कि मैं बजाय /etc/php.d में INI फ़ाइलों को जोड़ने या /etc/php.ini को संशोधित करने की /etc/php-fpm.d/www.conf को संशोधित करने के लिए किया था। इसे @Alexis N-O के उत्तर में पूर्ण पथ की भी आवश्यकता है।

php_admin_value[sendmail_path] = '/usr/bin/env GEM_PATH=/usr/share/gems:/usr/local/share/gems:/usr/share/rubygems:$HOME/.gem/ruby /usr/local/bin/catchmail --smtp-ip 127.0.0.1 --smtp-port 1025 -f [email protected]' 

अद्यतन: अभी हाल ही में मैंने पाया कि GEM_PATH जब कुछ वातावरण पर अपाचे के रूप में php-एफ पी एम चल नहीं के बराबर है। कोई फर्क नहीं पड़ता कि मैंने क्या कोशिश की (/ etc/gemrc) मैं इस आदेश के हिस्से के रूप में GEM_PATH इंजेक्ट करने के अलावा अन्य नहीं कर सका।

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