我遇到了这个错误:
Warning: simplexml_load_string(): Entity: line 46: parser error : Comment not terminated in */lib/Varien/Simplexml/Config.PHP on line 510
和
Entity: line 46: parser error : Start tag expected,'<' not found in */lib/Varien/Simplexml/Config.PHP on line 510
很明显,在某些Xml文件中存在问题,但我真的不容易找到大干草堆中的针头:)
有什么好的做法吗?
如果可能的话,我想找一个涉及使用Xdebug或一些日志的好习惯.
在Magento中花了很多时间来拼错拼写.
我想你可以看一下这篇文章
Dealing with XML errors.
原文链接:https://www.f2er.com/xml/293153.html此警告与某些config.xml错误有关,因此找到确切文件的可能解决方法是mod. /lib/Varien/Simplexml/Config.PHP类.
你应该修改Varien_Simplexml_Config :: loadString()方法:
public function loadString($string) { if (is_string($string)) { // Enable internal errors libxml_use_internal_errors(true); $xml = simplexml_load_string($string,$this->_elementClass); if (false === $xml) { // Put breakpoint here $errors = libxml_get_errors(); } if ($xml instanceof Varien_Simplexml_Element) { $this->_xml = $xml; return true; } } else { Mage::logException(new Exception('"$string" parameter for simplexml_load_string is not a string')); } return false; }
如果错误与某些布局文件有关(Update.PHP第444行警告)
您应该以类似的方式修改Mage_Core_Model_Layout_Update :: getFileLayoutUpdatesXml()方法:
public function getFileLayoutUpdatesXml($area,$package,$theme,$storeId = null) { if (null === $storeId) { $storeId = Mage::app()->getStore()->getId(); } /* @var $design Mage_Core_Model_Design_Package */ $design = Mage::getSingleton('core/design_package'); $layoutXml = null; $elementClass = $this->getElementClass(); $updatesRoot = Mage::app()->getConfig()->getNode($area.'/layout/updates'); Mage::dispatchEvent('core_layout_update_updates_get_after',array('updates' => $updatesRoot)); $updateFiles = array(); foreach ($updatesRoot->children() as $updateNode) { if ($updateNode->file) { $module = $updateNode->getAttribute('module'); if ($module && Mage::getStoreConfigFlag('advanced/modules_disable_output/' . $module,$storeId)) { continue; } $updateFiles[] = (string)$updateNode->file; } } // custom local layout updates file - load always last $updateFiles[] = 'local.xml'; $layoutStr = ''; foreach ($updateFiles as $file) { $filename = $design->getLayoutFilename($file,array( '_area' => $area,'_package' => $package,'_theme' => $theme )); if (!is_readable($filename)) { continue; } $fileStr = file_get_contents($filename); $fileStr = str_replace($this->_subst['from'],$this->_subst['to'],$fileStr); libxml_use_internal_errors(true); $fileXml = simplexml_load_string($fileStr,$elementClass); if (false === $fileXml) { // Put breakpoint here $errors = libxml_get_errors(); $err = array($filename,$errors); // error detail and file name will be printed Zend_Debug::dump($err); die(); } if (!$fileXml instanceof SimpleXMLElement) { continue; } $layoutStr .= $fileXml->innerXml(); } $layoutXml = simplexml_load_string('<layouts>'.$layoutStr.'</layouts>',$elementClass); return $layoutXml; }