2012-04-03 15 views
9

मुझे किसी तरह का मजाकिया मुद्दा है। को समझने के लिए क्यों एक निश्चित वेबसाइट ब्राउज़र को http कोड 500 रिटर्न की कोशिश में, मैं संदेशPHP "अपवाद नहीं मिला"

PHP Fatal error: Class 'MZ\\MailChimpBundle\\Services\\Exception' not found in /var/www/website/vendor/bundles/MZ/MailChimpBundle/Services/MailChimp.php on line 41 

Apache लॉग में पाया। उल्लेख लाइन को देखते हुए:

throw new Exception('This bundle needs the cURL PHP extension.'); 

अब मैं समझ कैसे साइट काम कर पाने के लिए, लेकिन मैं अभी भी क्यों अपवाद (जो एक और अधिक उपयोगी लॉग संदेश में हुई है |) फेंकने के लिए कोड में विफल रहा है। कारण क्या हो सकता है?

+3

कक्षा परिभाषा गायब है, यह सिर्फ कक्षा नहीं मिली है। जांचें कि स्रोतों में वास्तविक फ़ाइल है और यदि यह ऑटोलोडर सही तरीके से कॉन्फ़िगर किया गया है तो दोबारा जांचें। चूंकि यह एकीकरण से संबंधित है, हो सकता है कि यह विक्रेता द्वारा पूरी तरह से परीक्षण नहीं किया गया हो और '\ Exception' का अर्थ था (PHP की मूल, वैश्विक' अपवाद 'कक्षा)। – hakre

+0

लेकिन अगर उस नाम के साथ वैश्विक वर्ग है तो यह कैसे असफल हो सकता है? वैश्विक अपवाद वर्ग का आविष्कार इस लाइन से अलग दिखता है? (मैं एक PHP समर्थक नहीं हूं, इसलिए शायद मुझे यहां बुनियादी ज्ञान की कमी है) –

+3

हां, ऐसा लगता है: 'नया \ अपवाद फेंक दें (' यह बंडल ... 'क्योंकि उस पंक्ति को नाम दिया गया है। शायद यह संभव है कि आप पहले चेक करें यदि बंडल कोड के भीतर उस अपवाद वर्ग है। यदि नहीं, तो उस बंडल के लिए एक बग की रिपोर्ट करें। – hakre

उत्तर

27

MZMailChimpBundle एक वर्ग MZ\MailChimpBundle\Services नाम स्थान के अंदर Exception नामित शामिल नहीं है की निर्मित अपवाद वर्ग में एक उपयोगकर्ता परिभाषित अपवाद फेंकने के लिए कोशिश कर रहा है ।

उस साधारण तथ्य के कारण और त्रुटि संदेश के रूप में अपवाद सिग्नल को एकीकरण समस्या से संबंधित है (कर्ल लाइब्रेरी की जांच करें) मुझे लगता है कि यह एक बग है।

मूल का मतलब \Exception और Exception नहीं है। यह कुछ हद तक सामान्य गलती है जो नामस्थानों के साथ हो सकती है। Exception के रूप में फ़ाइल, या तो उर्फ ​​/ आयात \Exception ठीक करने के लिए:

namespace MZ\MailChimpBundle\Services; 
use Exception; 

और/या MZMailChimpBundle/Services/MailChimp.php में new लाइन बदलने के लिए:

throw new \Exception('This bundle needs the cURL PHP extension.'); 

संबंधित सवाल देखें रूप में अच्छी तरह: How to use “root” namespace of php? और के साथ एक वही कक्षा 'नामस्थान \ उदाहरण' नहीं मिला त्रुटि संदेश: Calling a static method from a class in another namespace in PHP

+0

महान स्पष्टीकरण , धन्यवाद! –

+0

+1 मेरी समस्या तय की गई –

+0

[माइग्यूल 250 द्वारा 722 9 7152 में तय 2012-08-11] [https://github.com/miguel250/MZMailChimpBundle/commit/722971523da673353a4a4285574ed914e57a74ef) – hakre

1

मेरे लिए लग रहा है कि लाइन वर्तमान नाम स्थान, नहीं पीएचपी ही

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