2011-03-24 15 views
5
में imap_open त्रुटि नोटिस मौन कर सकते हैं नहीं

मैं PHP 5.3.5 का उपयोग कर रहा हूँ और मैंपीएचपी

$this->[email protected]_open($this->server,$this->username,$this->password); 

उपयोग कर रहा हूँ @ चिह्न रिपोर्टिंग त्रुटि मौन चाहिए, लेकिन यह does not और मुझे यकीन है कि त्रुटि इस पर होता हूँ लाइन। मैं चाहता हूं कि मेरा आवेदन समस्या को पहचानने और प्रतिक्रिया दें और कोई नोटिस त्रुटियां न पाएं और मैं अपनी कंपनी विकास नीति के कारण पूरे PHP के लिए त्रुटि रिपोर्टिंग बंद नहीं कर सकता।

बिना @ मैं हो रही है

:

imap_open() [function.imap खुले]: मैं नहीं खुला धारा {pop3.seznam.cz:110/pop3}INBOX इसके साथ किया जा सका: नोटिस अज्ञात: प्रमाणीकरण विफल (प्रमाणीकरण विफल) (errflg = 1)

यदि लॉगिन जानकारी ठीक है तो यह कनेक्शन खुलता है और कोई त्रुटि नहीं होती है।

imap_open कनेक्ट करने में सक्षम नहीं होने पर मुझे हमेशा नोटिस त्रुटि मिलती है और यह मेरे JSON परिणामों के साथ गड़बड़ कर रहा है। कृपया इसे चुप कैसे करें?

+0

करता पीएचपी रिपोर्ट एक है कि नोटिस उत्पन्न के रूप में है कि रेखा क्या ज़रूरत है? @ कार्य करना चाहिए। – Belinda

+1

यह देखने में भी मददगार होगा कि आप वास्तव में क्या नोटिस देखते हैं। क्योंकि @ ऑपरेटर वास्तव में काम करना चाहिए। –

+0

उदाहरण के लिए: नोटिस अज्ञात: प्रमाणीकरण विफल (प्रमाणीकरण विफल) (errflg = 1) – Ragnar

उत्तर

17

मैं

$this->[email protected]_open($this->server,$this->username,$this->password); 
imap_errors(); 
imap_alerts(); 

और imap_errors(); और imap_alerts(); जोड़ा जादू :)

+0

मेरे लिए पूरी तरह से काम किया। वैसे, आप सरणी के लिए imap_errors() और imap_alerts() के आउटपुट को असाइन कर सकते हैं और उन्हें डायग्नोस्टिक टेक्स्ट के रूप में प्रिंट कर सकते हैं। – xgretsch

+0

वाह शानदार समाधान। मेरे लिए काम किया धन्यवाद @ रग्गर। – Raj

0

दो संभावनाएं मन में आते हैं:

  1. आप इतना है कि सूचना दबा दिया जाता है अपने php.ini, ini_set या .htaccess या इसी तरह के error_reporting सेट कर सकते हैं, लेकिन संभाल करने के बाद आप अपने आवेदन wan't त्रुटि, शायद यह नहीं है, आपको

  2. अपनी खुद की त्रुटि हैंडलिंग लागू करें। ऐसा करना इतना मुश्किल नहीं है। आप त्रुटि के लिए एक फ़ंक्शन को परिभाषित करते हैं और फिर PHP को इसके स्वयं के डिफ़ॉल्ट हैंडलर के बजाय इसका उपयोग करने के लिए कहते हैं।

    // परिभाषित

    समारोह myHandler ($ errno, $ errstr) {}

    // कहीं अपने प्रसंस्करण स्क्रिप्ट की शुरुआत की दिशा में

    set_error_handler ("myHandler");

अधिक के लिए set_error_handler देखें। यह भी ध्यान रखें कि जिस समय से आप हैंडलर पंजीकृत करते हैं, आप पूरी तरह उत्तरदायी होते हैं। आप जिस भी त्रुटि/चाहें उसे दबाने या फेंक सकते हैं।

+0

पहला वह नहीं है जो मैं चाहता हूं और दूसरे के पहले के समान प्रभाव के बारे में है।मैं सभी php त्रुटियों से निपटने वाली किसी भी चीज़ का उपयोग नहीं कर सकता – Ragnar

+1

त्रुटि_ रिपोर्टिंग स्तर को सेट करने पर इसका कोई प्रभाव नहीं पड़ता है। मैंने बस इसके साथ एक घंटे का बेहतर हिस्सा बिताया, और 'imap_ *' कार्यों द्वारा उत्पन्न नोटिस और चेतावनियों को दबाने का एकमात्र तरीका @ रग्गर के उत्तर में है। PHP devs ने कुछ सचमुच \ * \ * \ * \ * एड अप और आईएमएपी के साथ जघन्य चीजें की हैं, जिससे मुझे सबसे खराब लाइब्रेरी बना रही है जिसे मैंने कभी सौदा किया है। – Sammitch