2016-03-27 104 views
1

此錯誤不斷填充SYSTEM.LOG:Magento在system.log中添加調試跟蹤?

2016-03-27T13:59:10+00:00 ERR (3): Warning: simplexml_load_string(): Entity: line 12: parser error : Premature end of data in tag config line 2 in /home/xxxx/public_html/lib/Varien/Simplexml/Config.php on line 510 

每隔幾分鐘或幾個小時。找到罪魁禍首,我嘗試添加這在config.php:

file_put_contents('/home/xxxx/public_html/xml_errors/'.sha1(microtime(true)).'.txt', $string . PHP_EOL . '=====' . PHP_EOL . print_r(debug_backtrace(), true)); 

的510線的config.php之前:

$xml = simplexml_load_string($string, $this->_elementClass); 

這是非常快速地建造每秒510個文件,我的店很忙,我仍然不知道如何確定實際上會引起警告的$string

我如何定製system.log以給出警告的調試跟蹤,以便我可以跟蹤傳遞給Config.php的xml字符串的實際來源?

或者任何其他建議找到無效XML的來源將非常感激!

回答

0

我能夠加入到問題的行追溯:

$xml = simplexml_load_string($string, $this->_elementClass); 

像這樣:

set_error_handler("warning_handler", E_WARNING); 
$xml = simplexml_load_string($string, $this->_elementClass); 
restore_error_handler(); 

,然後在config.php文件的末尾添加一個獨立的功能:

function warning_handler($errno, $errstr, $errfile, $errline) { 
    file_put_contents('/home/xxxx/public_html/xml_errors/'.sha1(microtime(true)).'.txt', print_r(debug_backtrace(), true)); 
} 

當然,您必須手動創建文件夾xml_errors。