Error log record number – Comment identifier le problème

Écrit par Mario SAM

Si quelque chose peut aller mal, cela donnera certainement” – La loi de Murphy

Comme l’erreur est inévitable, nous devons apprendre à y faire face. Et la meilleure façon de résoudre un problème est d’identifier sa cause. Cela peut sembler évident de cette façon, mais il y a beaucoup de gens qui s’occupent de traiter uniquement les symptômes et leurs effets secondaires, négligeant ainsi leurs origines.

Voyons dans cette publication comment Magento crée les fichiers journaux et comment interpréter les informations générées.

Error log record number

Jusqu’à la version 1.3.2.4, chaque fois que le système présentait un problème inattendu, il a été envoyé au navigateur, exposant ainsi toute la fragilité du site à celui qui naviguait.

De cette façon, vous avez eu deux problèmes. L’erreur inattendue, et une violation de la sécurité qui pourrait être exploitée par un pirate de service.

À partir de la version 1.4.x, Magento a présenté des améliorations dans la gestion des erreurs.

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

Eh bien, résumer le message d’erreur n’est pas tout à fait l’amélioration que tout le monde attend, mais il réduit le risque d’attaques externes en exploitant les défauts qui ont causé le problème.

Interprétation du message

Beaucoup de gens pensent que le problème est identifié par le nombre de journal présenté. Et ils regardent dans les forums et aident les groupes à trouver une solution à l’erreur de numéro xxx. Et ce n’est pas ainsi que ça fonctionne. En faisant une traduction gratuite et adaptée de la page d’erreur, nous aurons un message qui dit:

Vous avez baisé le traitement de votre demande de page
L'erreur n'apparaîtra pas sur cette page pour plus de sécurité.
VOIR le fichier journal avec le numéro: xxxxxxxxxxx

Ce nombre est aléatoire, probablement basé sur un compteur chronologique comme timestamp. Ce numéro est uniquement pour le fichier à localiser.

Chaque fois que cet écran d’erreur s’affiche, vous pouvez trouver un fichier (sans extension) dans votre répertoire d’installation Magento, dans le dossier “var/report/“. Ouvrez simplement le fichier à l’aide d’un éditeur de texte.

Identification du problème

Dès que vous ouvrez le fichier, une séquence d’informations doit être affichée. Le premier coup d’œil peut sembler être indéfinissable, mais avec le temps et quelques conseils, vous pourrez résoudre la plupart d’entre eux.

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 /Votre répertoire d'installation/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /Votre répertoire d'installation/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /Votre répertoire d'installation/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `catalog...', Array)
#3 /Votre répertoire d'installation/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `catalog...', Array)
#4 /Votre répertoire d'installation/lib/Zend/Db/Adapter/Abstract.php(725): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#5 /Votre répertoire d'installation/app/code/core/Mage/CatalogInventory/Model/Mysql4/Stock/Item.php(53): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
#6 /Votre répertoire d'installation/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 /Votre répertoire d'installation/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 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(212): include('/Volumes/ Unida...')
#9 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(239): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#10 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(253): Mage_Core_Block_Template->renderView()
#11 /Votre répertoire d'installation/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#12 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Template->_toHtml()
#13 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Abstract.php(520): Mage_Core_Block_Abstract->toHtml()
#14 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Abstract.php(467): Mage_Core_Block_Abstract->_getChildHtml('items_grid', true)
#15 /Votre répertoire d'installation/app/design/adminhtml/default/default/template/sales/order/create/items.phtml(32): Mage_Core_Block_Abstract->getChildHtml()
#16 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(212): include('/Volumes/ Unida...')
#17 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(239): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#18 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Template.php(253): Mage_Core_Block_Template->renderView()
#19 /Votre répertoire d'installation/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#20 /Votre répertoire d'installation/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Items.php(67): Mage_Adminhtml_Block_Template->_toHtml()
#21 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Sales_Order_Create_Items->_toHtml()
#22 /Votre répertoire d'installation/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Load.php(44): Mage_Core_Block_Abstract->toHtml()
#23 /Votre répertoire d'installation/app/code/core/Mage/Core/Block/Abstract.php(753): Mage_Adminhtml_Block_Sales_Order_Create_Load->_toHtml()
#24 /Votre répertoire d'installation/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php(342): Mage_Core_Block_Abstract->toHtml()
#25 /Votre répertoire d'installation/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_Sales_Order_CreateController->loadBlockAction()
#26 /Votre répertoire d'installation/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('loadBlock')
#27 /Votre répertoire d'installation/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#28 /Votre répertoire d'installation/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#29 /Votre répertoire d'installation/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#30 /Votre répertoire d'installation/index.php(78): Mage::run('', 'store')
#31 {main}";s:3:"url";s:186:"/Votre répertoire d'installation/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:"/Votre répertoire d'installation/index.php";s:4:"skin";s:5:"admin";}

Regardons l’exemple ci-dessus. Magento crée une séquence d’événements en utilisant # pour identifier chaque chemin parcouru jusqu’à ce que l’erreur soit rencontrée.

Étant la source #31, elle montre l’événement (url) qui a déclenché l’erreur. Bien qu’il s’agisse d’informations théoriquement évidentes, puisque vous naviguez le moment où l’erreur est apparue.

Ce qui compte vraiment pour vous, c’est ce qui vient avant le #1. C’est le message que vous devez interpréter. Dans cet exemple:

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

Si vous êtes un développeur, vous comprendrez rapidement qu’il s’agit d’une erreur SQL. Et dans le reste du message, il est encore possible d’identifier l’erreur plus en détail.

Maintenant, si vous lisez la première ligne du fichier journal et que vous ne comprenez rien… eh bien, ne vous découragez pas. Maintenant, vous savez ce qu’il faut rechercher, et vous pouvez demander de l’aide correctement dans les forums et les groupes.

Toujours en alerte

Une bonne façon de traiter les problèmes consiste à travailler sur leur prévention. Et les conseils ci-dessous peuvent vous aider.

1. Toujours avoir une sauvegarde de ce qui est vraiment important. La fréquence de génération de sauvegardes dépend du débit (quantité) et de l’importance (habituellement financière) que cela peut représenter. Les sauvegardes peuvent être quotidiennes, hebdomadaires, mensuelles, bimensuelles.

2. Avoir un environnement de test. Magento possède plusieurs versions de son système, et il existe d’innombrables modules à votre disposition. Ne vous enlevez pas par l’excitation d’avoir un nouveau module dans votre magasin tout de suite… faites d’abord une batterie de tests dans un environnement simulé, et seulement après votre passage, vous devez l’homologuer dans votre magasin. Prenez ce conseil au sérieux, la plupart des problèmes sont causés par des modules incompatibles.

3. Après avoir modifié les fichiers de configuration, les modules et/ou les modèles, mettez à jour votre système et votre cache de navigateur. Et n’oubliez pas de réindecir les données chaque fois que Magento les demande. Il se peut que vous appliquez un changement incohérent et que le système ne pose pas de problème immédiatement car il continue de fonctionner avec les fichiers cache, et plusieurs mois plus tard, le problème apparaît “rien”.

4. Après avoir lu le fichier journal, vous n’en avez plus besoin, vous pouvez supprimer le fichier du dossier “var/report/” sans aucun problème. Mais soyez proactif, n’attendez pas le problème pour vous venir. Prenez l’habitude de vérifier ce répertoire de temps en temps, car un problème peut être “découvert” par certains visiteurs du site, et tout le monde ne contactera pas le magasin pour vous informer qu’un problème d’expédition s’est produit.

5. Apprenez à demander de l’aide. Les messages dans les forums intitulés “URGENT” ne seront pas utiles. Commencez par utiliser le champ de recherche dans le forum avec des mots clés qui identifient votre problème, voir si quelqu’un a déjà connu le même problème et a pu le résoudre. Sinon, ouvrez un nouveau sujet et mettez un titre qui s’explique par lui-même. Vos chances d’obtenir de l’aide et d’aider les autres n’augmenteront que.

Succès!

L'auteur

Mario SAM

En attendant qu'une opportunité se présente de m'installer en France, je continue d'aider à distance.