2012-09-10 14 views
22

किसी को भी पता है कि आप Magento पूर्ण त्रुटि संदेश दिखाई कर सकता हूँ और इसके साथ काट-छांट नहीं ...Magento कैसे दिखाएँ करने के लिए पूर्ण छंटनी की गई करने के बजाय एक त्रुटि संदेश

उदाहरण:

Warning: include() [function.include]: Filename cannot be empty in /home/kevinmag/public_html/app/code/core/Mage/Core/Block/Template.php on line 241 

0 /home/kevinmag/public_html/app/code/core/Mage/Core/Block/Template.php(241): mageCoreErrorHandler(2, 'include() [fetchView('frontend/base/d...') 

मैं करना चाहते हैं पता है कि [fetchView ('दृश्यपटल/आधार/डी ...') इसके साथ ...

+0

+1 मैं कई अवसरों पर इस तरह की चीज़ भी देखना चाहता था। – kalenjordan

+0

मुझे भी @sparcksoft – Guerra

उत्तर

27

काट Magento दोष मत करो, यह सब पीएचपी की गलती :) Exception::getTraceAsString देशी विधि पश्व-अनुरेखन उत्पादन में कटौती है, और ऐसा लगता है कि इसे संभालने का कोई सामान्य तरीका नहीं है।

एकमात्र समाधान मैं काम करने के लिए मिल गया है बगल में है:

  1. मैं एक समारोह है, जो मैं तरह श्रीमान Steve (How can I get the full string of PHP’s getTraceAsString()) एप्लिकेशन \ कोड \ कोर \ दाना से मिला जोड़ दिया है \ कोर \ functions.php:

    function getExceptionTraceAsString($exception) { 
        $rtn = ""; 
        $count = 0; 
        foreach ($exception->getTrace() as $frame) { 
         $args = ""; 
         if (isset($frame['args'])) { 
          $args = array(); 
          foreach ($frame['args'] as $arg) { 
           if (is_string($arg)) { 
            $args[] = "'" . $arg . "'"; 
           } elseif (is_array($arg)) { 
            $args[] = "Array"; 
           } elseif (is_null($arg)) { 
            $args[] = 'NULL'; 
           } elseif (is_bool($arg)) { 
            $args[] = ($arg) ? "true" : "false"; 
           } elseif (is_object($arg)) { 
            $args[] = get_class($arg); 
           } elseif (is_resource($arg)) { 
            $args[] = get_resource_type($arg); 
           } else { 
            $args[] = $arg; 
           } 
          } 
          $args = join(", ", $args); 
         } 
         $rtn .= sprintf("#%s %s(%s): %s%s(%s)\n", 
          $count, 
          $frame['file'], 
          $frame['line'], 
          isset($frame['class']) ? $frame['class'] . '->' : '', 
          $frame['function'], 
          $args); 
         $count++; 
        } 
        return $rtn; 
    } 
    
  2. मैं संशोधित किया Mage.php फ़ाइल (printException विधि) - बजाय $e->getTraceAsString() की मैंडाला है- ध्यान दें कि दो उपस्थितियां हैं: डीबग मोड के लिए, और बंद।

परिणाम प्रदर्शित करने के लिए, यहां दो बैकट्रैक का एक उदाहरण है - ठीक किए बिना, और तदनुसार ठीक करें।

ओल्ड:

0 C:\apache\htdocs\checkout\lib\Varien\Db\Statement\Pdo\Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array) 
1 C:\apache\htdocs\checkout\lib\Zend\Db\Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array) 
2 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Abstract.php(479): Zend_Db_Statement->execute(Array) 
3 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT COUNT(DI...', Array) 
4 C:\apache\htdocs\checkout\lib\Varien\Db\Adapter\Pdo\Mysql.php(389): Zend_Db_Adapter_Pdo_Abstract->query('SELECT COUNT(DI...', Array) 
5 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Abstract.php(825): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array) 
6 C:\apache\htdocs\checkout\lib\Varien\Data\Collection\Db.php(217): Zend_Db_Adapter_Abstract->fetchOne(Object(Varien_Db_Select), Array) 
7 C:\apache\htdocs\checkout\lib\Varien\Data\Collection.php(225): Varien_Data_Collection_Db->getSize() 
8 C:\apache\htdocs\checkout\lib\Varien\Data\Collection.php(211): Varien_Data_Collection->getLastPageNumber() 
9 C:\apache\htdocs\checkout\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(996): Varien_Data_Collection->getCurPage() 
10 C:\apache\htdocs\checkout\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(831): Mage_Eav_Model_Entity_Collection_Abstract->_loadEntities(false, false) 
11 C:\apache\htdocs\checkout\app\code\core\Mage\Review\Model\Observer.php(78): Mage_Eav_Model_Entity_Collection_Abstract->load() 
12 C:\apache\htdocs\checkout\app\code\core\Mage\Core\Model\App.php(1299): Mage_Review_Model_Observer->catalogBlockProductCollectionBeforeToHtml(Object(Varien_Event_Observer)) 
13 C:\apache\htdocs\checkout\app\code\core\Mage\Core\Model\App.php(1274): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Review_Model_Observer), 'catalogBlockPro...', Object(Varien_Event_Observer)) 
14 C:\apache\htdocs\checkout\app\Mage.php(416): Mage_Core_Model_App->dispatchEvent('catalog_block_p...', Array) 

नई:

0 C:\apache\htdocs\checkout\lib\Varien\Db\Statement\Pdo\Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array) 
1 C:\apache\htdocs\checkout\lib\Zend\Db\Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array) 
2 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Abstract.php(479): Zend_Db_Statement->execute(Array) 
3 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT COUNT(DISTINCT e.entity_id) FROM `catalog_product_entity` AS `e` 
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3' AND cat_index.is_parent=1 
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 WHERE (d=1) AND (d=1)', Array) 
4 C:\apache\htdocs\checkout\lib\Varien\Db\Adapter\Pdo\Mysql.php(389): Zend_Db_Adapter_Pdo_Abstract->query('SELECT COUNT(DISTINCT e.entity_id) FROM `catalog_product_entity` AS `e` 
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3' AND cat_index.is_parent=1 
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 WHERE (d=1) AND (d=1)', Array) 
5 C:\apache\htdocs\checkout\lib\Zend\Db\Adapter\Abstract.php(825): Varien_Db_Adapter_Pdo_Mysql->query(Varien_Db_Select, Array) 
6 C:\apache\htdocs\checkout\lib\Varien\Data\Collection\Db.php(217): Zend_Db_Adapter_Abstract->fetchOne(Varien_Db_Select, Array) 
7 C:\apache\htdocs\checkout\lib\Varien\Data\Collection.php(225): Varien_Data_Collection_Db->getSize() 
8 C:\apache\htdocs\checkout\lib\Varien\Data\Collection.php(211): Varien_Data_Collection->getLastPageNumber() 
9 C:\apache\htdocs\checkout\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(996): Varien_Data_Collection->getCurPage() 
10 C:\apache\htdocs\checkout\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(831): Mage_Eav_Model_Entity_Collection_Abstract->_loadEntities(false, false) 
11 C:\apache\htdocs\checkout\app\code\core\Mage\Review\Model\Observer.php(78): Mage_Eav_Model_Entity_Collection_Abstract->load() 
12 C:\apache\htdocs\checkout\app\code\core\Mage\Core\Model\App.php(1299): Mage_Review_Model_Observer->catalogBlockProductCollectionBeforeToHtml(Varien_Event_Observer) 
13 C:\apache\htdocs\checkout\app\code\core\Mage\Core\Model\App.php(1274): Mage_Core_Model_App->_callObserverMethod(Mage_Review_Model_Observer, 'catalogBlockProductCollectionBeforeToHtml', Varien_Event_Observer) 
14 C:\apache\htdocs\checkout\app\Mage.php(416): Mage_Core_Model_App->dispatchEvent('catalog_block_product_list_collection', Array) 

अद्यतन: उपरोक्त तर्क केवल संशोधित त्रुटि/रिपोर्ट आउटपुट; साथ

self::log("\n" . $e->getMessage() . getExceptionTraceAsString($e), Zend_Log::ERR, $file); 

आशा है कि यह मदद करता है परिवर्तन

self::log("\n" . $e->__toString(), Zend_Log::ERR, $file); 

- अपवाद लॉग को यह तर्क जोड़ने के लिए और साथ ही आप दाना संशोधित करने के लिए चाहता हूँ :: logException विधि!

+3

शायद आपको इस उत्तर के मूल लेखक को श्रेय देना चाहिए?: Http://stackoverflow.com/questions/1949345/how-can-i-get-the-full-string-of-phps- gettraceasstring –

+1

इसे @ user1189880 पर इंगित करने के लिए धन्यवाद! मुझे अपनी पुरानी परियोजना में कोड मिला है, और पूरी तरह से भूल गया है कि मुझे यह कहां से मिला है। मैंने क्रेडिट स्टीव को पोस्ट अपडेट कर दिया है। –

+0

धन्यवाद महान काम करता है :) –

2

यह PHP है और Magento नहीं है।

यहाँ देखें जहां काट-छांट हो रहा है - https://github.com/php/php-src/blob/master/Zend/zend_exceptions.c#L383

मैं व्यक्तिगत रूप से सिर्फ इसके साथ रहते हैं और के रूप में विरोध किया अन्य डिबगिंग तरीकों का उपयोग कोर फ़ाइलों :)

+3

हैकिंग कोर खराब है, लेकिन उत्पादन पर पॉप अप करने वाले यादृच्छिक अपवादों के साथ अंधेरा होना बुरा है ... यदि PHP हमें सामान्य प्रदान नहीं कर रहा है समाधान, हमें हैक्स –

+1

का उपयोग करने की आवश्यकता है यह साझा करने में मदद करेगा कि "अन्य डिबगिंग विधियां" क्या उपयोग करने के लिए हैं। –

-3

हैकिंग करने के लिए चाहते हैं तुम सिर्फ साधारण परिवर्तन से यह कर सकते हैं आपकी फाइल में इस को बचाने और अपने फ़ाइल अपलोड करें और कैश को साफ़ और अब सभी त्रुटियों को प्रदर्शित किया जाएगा

बस आप रूट फ़ोल्डर पर index.php वर्तमान खोलने के लिए और सिर्फ <?php error_reporting(E_ALL);

के शुरू टैग के बाद के बाद निम्न पंक्ति लिखें।

+0

जो सवाल नहीं था – OSdave

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