Error log record number – Come identificare il problema

Se qualcosa può andare storto, darà certamente” – la legge di Murphy

Poiché l’errore è inevitabile, dobbiamo imparare ad affrontarlo. E il modo migliore per risolvere un problema è identificare la causa. Può sembrare ovvio in questo modo, ma ci sono molte persone che si occupano di trattare solo i sintomi ei loro effetti collaterali, trascurando così le loro origini.

Vediamo in questo post come Magento crea i file di log e come possiamo interpretare le informazioni generate.

Error log record number

Fino alla versione 1.3.2.4, ogni volta che il sistema presentava un problema imprevisto, è stato inviato al browser, esponendo così tutta la fragilità del sito a chiunque stava navigando.

In questo modo avevate due problemi. L’errore inaspettato e una violazione della sicurezza che potrebbe essere sfruttata da un hacker in servizio.

A partire dalla versione 1.4.x, Magento ha presentato miglioramenti nella gestione degli errori.

There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number: 1000038750

Bene, riassumendo il messaggio di errore non è proprio il miglioramento che tutti si aspettavano, ma riduce il rischio di attacchi esterni sfruttando i difetti che hanno causato il problema.

Interpretare il messaggio

Molte persone pensano che il problema sia identificato dal numero del registro presentato. E guardano nei forum e ai gruppi di aiuto per una soluzione all’errore di numero xxx. E non è così che funziona. Facendo una traduzione libera e adatta della pagina di errore, avremo un messaggio che dice:

Si è incasinato nell'elaborazione della richiesta della tua pagina
L'errore non verrà visualizzato in questa pagina per la sicurezza.
VEDI il file di registro con numero: xxxxxxxxxxx

Questo numero è casuale, probabilmente basato su un contatore cronologico come un timestamp. Questo numero è solo per il file da individuare.

Ogni volta che viene visualizzata questa schermata di errore, puoi trovare un file (senza estensione) nella tua directory di installazione di Magento nella cartella “var/report/“. Basta aprire il file utilizzando un editor di testo.

Identificazione del problema

Non appena si apre il file, è necessario visualizzare una sequenza di informazioni. Il primo sguardo può sembrare qualcosa di indelebile, ma con il tempo e con alcuni consigli sarai in grado di risolvere la maggior parte di loro.

a:5:{i:0;s:220:"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND (stock_id=1)' at line 2";i:1;s:5650:"#0 /La tua directory di installazione/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /La tua directory di installazione/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /La tua directory di installazione/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `catalog...', Array)
#3 /La tua directory di installazione/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `catalog...', Array)
#4 /La tua directory di installazione/lib/Zend/Db/Adapter/Abstract.php(725): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#5 /La tua directory di installazione/app/code/core/Mage/CatalogInventory/Model/Mysql4/Stock/Item.php(53): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
#6 /La tua directory di installazione/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php(134): Mage_CatalogInventory_Model_Mysql4_Stock_Item->loadByProductId(Object(Mage_CatalogInventory_Model_Stock_Item), Object(Mage_Sales_Model_Quote_Item))
#7 /La tua directory di installazione/app/design/adminhtml/default/default/template/sales/order/create/items/grid.phtml(239): Mage_CatalogInventory_Model_Stock_Item->loadByProduct(Object(Mage_Sales_Model_Quote_Item))
#8 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(212): include('/Volumes/ Unida...')
#9 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(239): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#10 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(253): Mage_Core_Block_Template->renderView()
#11 /La tua directory di installazione/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#12 /La tua directory di installazione/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Template->_toHtml()
#13 /La tua directory di installazione/app/code/core/Mage/Core/Block/Abstract.php(520): Mage_Core_Block_Abstract->toHtml()
#14 /La tua directory di installazione/app/code/core/Mage/Core/Block/Abstract.php(467): Mage_Core_Block_Abstract->_getChildHtml('items_grid', true)
#15 /La tua directory di installazione/app/design/adminhtml/default/default/template/sales/order/create/items.phtml(32): Mage_Core_Block_Abstract->getChildHtml()
#16 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(212): include('/Volumes/ Unida...')
#17 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(239): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#18 /La tua directory di installazione/app/code/core/Mage/Core/Block/Template.php(253): Mage_Core_Block_Template->renderView()
#19 /La tua directory di installazione/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#20 /La tua directory di installazione/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Items.php(67): Mage_Adminhtml_Block_Template->_toHtml()
#21 /La tua directory di installazione/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Sales_Order_Create_Items->_toHtml()
#22 /La tua directory di installazione/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Load.php(44): Mage_Core_Block_Abstract->toHtml()
#23 /La tua directory di installazione/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Sales_Order_Create_Load->_toHtml()
#24 /La tua directory di installazione/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php(342): Mage_Core_Block_Abstract->toHtml()
#25 /La tua directory di installazione/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_Sales_Order_CreateController->loadBlockAction()
#26 /La tua directory di installazione/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('loadBlock')
#27 /La tua directory di installazione/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#28 /La tua directory di installazione/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#29 /La tua directory di installazione/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#30 /La tua directory di installazione/index.php(78): Mage::run('', 'store')
#31 {main}";s:3:"url";s:186:"/La tua directory di installazione/index.php/admin/sales_order_create/loadBlock/key/97888fef60b8f8c3ed3d7b6617e17259/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true";s:11:"script_name";s:33:"/La tua directory di installazione/index.php";s:4:"skin";s:5:"admin";}

Diamo un’occhiata all’esempio precedente. Magento crea una sequenza di eventi usando # per identificare ogni percorso percorso fino all’avvenuta errore.

Essendo la sorgente #31, mostra l’evento (url) che ha attivato l’errore. Anche se era informazione teoricamente evidente, dal momento che stavate navigando nel momento in cui è apparso l’errore.

Quello che conta veramente è quello che viene prima del #1. Questo è il messaggio da interpretare. In questo esempio:

a:5:{i:0;s:220:"SQLSTATE[42000]: Syntax error...

Se sei uno sviluppatore, capirete rapidamente che questo è un errore SQL. E nel resto del messaggio è ancora possibile identificare più erroneamente l’errore.

Ora, se leggi la prima riga del file di log e non hai capito nulla… beh, non scoraggiatevi. Ora sai cosa cercare, e puoi richiedere aiuto in modo corretto nei forum e nei gruppi.

Sempre in avviso

Un buon modo per trattare i problemi è lavorando alla loro prevenzione. E i suggerimenti qui sotto potrebbero aiutare.

1. Sempre un backup di ciò che è veramente importante. La frequenza di generazione dei backup dipenderà dal flusso (quantità) e dall’importanza (di solito finanziaria) che questo può rappresentare. I backup possono essere quotidiani, settimanali, mensili, bimestrali.

2. Avere un ambiente di test. Magento ha diverse versioni del suo sistema, e vi sono innumerevoli moduli a vostra disposizione. Non lasciatevi trasportare dall’emozione di avere subito un nuovo modulo in esecuzione nel tuo negozio… innanzitutto fare una batteria di test in un ambiente simulato e solo dopo averlo passato, devi omologarlo nel tuo negozio. Prendi questa punta seriamente, la maggior parte dei problemi sono causati da moduli incompatibili.

3. Dopo aver apportato modifiche ai file di configurazione, ai moduli e/o ai modelli, aggiornare la cache del sistema e del browser. E non dimenticare di reindicizzare i dati ogni volta che richiede Magento. Può accadere che si applica una modifica inconsistente e il sistema non presenta immediatamente un problema perché continua a funzionare con i file di cache e mesi dopo il problema appare “niente”.

4. Dopo aver letto il file di registro, non è più necessario, puoi eliminare il file dalla cartella “var/report/” senza alcun problema. Ma essere proattivi, non aspettare che il problema venga a voi. Rendere l’abitudine di controllare questa directory di tanto in tanto, in quanto un problema può essere “scoperto” da alcuni visitatori del sito e non tutti contatteranno il negozio per avvisarti che si è verificato un problema di spedizione.

5. Impara a chiedere aiuto. I messaggi nei forum intitolati “URGENTE” non aiuteranno. Iniziare utilizzando il campo di ricerca nel forum con le parole chiave che identificano il tuo problema, vedere se qualcuno ha già provato lo stesso problema ed è stato in grado di risolverlo. In caso contrario, aprire un nuovo argomento e mettere un titolo che è esplicativo. Le tue possibilità di ottenere aiuto e aiutare gli altri aumentano solo.

Successo!