Jump to content

Bug lors de la mise à jour 1.7.6 --> 1.7.7


compas
 Share

Recommended Posts

Bonjour,

J'ai actuellement un problème d'accès à mon site suite à une mise à jour de la version 1.7.6 à la version 1.7.7 de prestashop.

J'ai lancé la mise à jour avec le module clickupgrade et tout s'est bien passé, jusqu'à ce que je recoive un message disant qu'il y avait une erreur avec la base de données. A ce moment là mon écran était bloqué et je ne pouvais plus rien faire.

De ce fait j'ai téléchargé une sauvegarde qui est sur mon compte Amazon S3.
A la fin du téléchargement de ma sauvegarde, mon site ne fonctionne toujours pas, et j'ai ce message d'erreur : 

Fatal error: Uncaught Error: Class 'Cache' not found in /home/shairbeauty/public_html/classes/ObjectModel.php:1999 Stack trace: #0 /home/shairbeauty/public_html/classes/ObjectModel.php(232): ObjectModelCore::getDefinition('Shop') #1 /home/shairbeauty/public_html/classes/shop/Shop.php(128): ObjectModelCore->__construct('1', NULL, NULL) #2 /home/shairbeauty/public_html/classes/shop/Shop.php(413): ShopCore->__construct('1') #3 /home/shairbeauty/public_html/config/config.inc.php(119): ShopCore::initialize() #4 /home/shairbeauty/public_html/index.php(27): require('/home/shairbeau...') #5 {main} thrown in /home/shairbeauty/public_html/classes/ObjectModel.php on line 1999


D'après vous, comment est-ce que je peux résoudre ce problème ?

Merci beaucoup pour votre aide. N'hésitez pas àme demander d'autres informations si vous avez besoin.

Voici l'adresse du site : https://3s-hairbeauty.net/fr/

Share this post


Link to post
Share on other sites

Je viens de constater que mon archive de Amazon S3 ne contenias pas le dossier "cache".

J'ai fais un test en récupérant le dossier "cache" dans le prestashop initial, et je l'ai ensuite copé dans ma sauvegarde. Malheureusement ca ne focntionne toujours pas...

1ère question : Est-ce normal qu'il n'y ait pas le dossier "cache" dans ma sauveagrde Amazon S3 ?

2ème question : Est-il normal que ca ne fonctionne toujours pas en important un dossier "cache" d'origine dans ma sauvegarde ?

Share this post


Link to post
Share on other sites

C'est effectivement les bon droits.

Supprime les répertoires prod & dev à l'intérieur pour forcer Prestashop à les régénérer.

Au besoin active aussi le mode debug en modifiant le fichier defines.inc.php dans le répertoire config

Il faut passer define('_PS_MODE_DEV_', false); en define('_PS_MODE_DEV_', true);

Cela devrait donner plus d'infos.

Share this post


Link to post
Share on other sites

le mode debug était déja sur TRUE et voici le message :

Fatal error: Uncaught Error: Class 'Cache' not found in /home/shairbeauty/public_html/classes/ObjectModel.php:1999 Stack trace: #0 /home/shairbeauty/public_html/classes/ObjectModel.php(232): ObjectModelCore::getDefinition('Shop') #1 /home/shairbeauty/public_html/classes/shop/Shop.php(128): ObjectModelCore->__construct('1', NULL, NULL) #2 /home/shairbeauty/public_html/classes/shop/Shop.php(413): ShopCore->__construct('1') #3 /home/shairbeauty/public_html/config/config.inc.php(119): ShopCore::initialize() #4 /home/shairbeauty/public_html/index.php(27): require('/home/shairbeau...') #5 {main} thrown in /home/shairbeauty/public_html/classes/ObjectModel.php on line 1999

Concernant les répertoires prod & Dev, je ne les trouve pas dans le dossier "cache". Ou sont-ils ?

Mon répertoire "cache" comprend ces dossiers :

cachefs
purifier
push
sandbox
smarty
tcpdf
.htaccess
deprecated.txt
index.php

Share this post


Link to post
Share on other sites

Si tu ouvres le petit fichier texte dans ce répertoire (ce qui est toujours à faire lorsque tu en vois un) tu apprendrais que le répertoire de cache de la version 1.7 ne se trouve pas ici, mais dans var/cache/ ;)

Share this post


Link to post
Share on other sites

En effet, merci du conseil 🙂

Alors je viens de supprimer DEV & PROD et maintenant j'ai un autre message d'erreur qui s'affiche :

Warning: include(/home/shairbeauty/public_html/vendor/composer/../doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php): failed to open stream: No such file or directory in /home/shairbeauty/public_html/vendor/composer/ClassLoader.php on line 444

Warning: include(/home/shairbeauty/public_html/vendor/composer/../doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php): failed to open stream: No such file or directory in /home/shairbeauty/public_html/vendor/composer/ClassLoader.php on line 444

Warning: include(): Failed opening '/home/shairbeauty/public_html/vendor/composer/../doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php' for inclusion (include_path='/home/shairbeauty/public_html/vendor/pear/pear_exception:/home/shairbeauty/public_html/vendor/pear/console_getopt:/home/shairbeauty/public_html/vendor/pear/pear-core-minimal/src:/home/shairbeauty/public_html/vendor/pear/archive_tar:.:/usr/lib/php:/usr/local/lib/php') in /home/shairbeauty/public_html/vendor/composer/ClassLoader.php on line 444

Fatal error: Uncaught Error: Class 'Doctrine\Common\Cache\ArrayCache' not found in /home/shairbeauty/public_html/src/Adapter/ContainerBuilder.php:194 Stack trace: #0 /home/shairbeauty/public_html/src/Adapter/ContainerBuilder.php(123): PrestaShop\PrestaShop\Adapter\ContainerBuilder->loadDoctrineAnnotationMetadata() #1 /home/shairbeauty/public_html/src/Adapter/ContainerBuilder.php(93): PrestaShop\PrestaShop\Adapter\ContainerBuilder->buildContainer('front') #2 /home/shairbeauty/public_html/classes/controller/FrontController.php(1968): PrestaShop\PrestaShop\Adapter\ContainerBuilder::getContainer('front', true) #3 /home/shairbeauty/public_html/classes/controller/Controller.php(184): FrontControllerCore->buildContainer() #4 /home/shairbeauty/public_html/classes/controller/FrontController.php(271): ControllerCore->init() #5 /home/shairbeauty/public_html/classes/controller/Controller.php(273): FrontControllerCore->init() #6 /home/shairbeauty/public_html/classes/Dispatcher.php(515): ControllerCore->run() #7 /home/shairbeauty/publi in /home/shairbeauty/public_html/src/Adapter/ContainerBuilder.php on line 194

Visiblement mon répertoire VENDOR est à l'origine du BUG non ?

J'apprends au fil de l'eau...lol

Share this post


Link to post
Share on other sites

Ne sachant pas exactement qui est quoi dans ton cas (local / pas local / backup ), Sauvegarde bien ce que tu as actuellement et upload une autre version que tu as en te permettant au passage de vérifier si le fichier qu'il cherche à inclure s'y trouve bien.

Share this post


Link to post
Share on other sites

J'ai profité de ma situation pour télécharger tous les fichiers de la dernière version de prestashop 1.7.7 (comme si je faisais une mise à jour standard par FTP).

J'ai donc téléchargé la version gratuite de prestashop 1.7.7.

Je pense que ca permet d'avancer un peu car mon message d'erreur à changé, et est davantage centré sur le fichier Cart.php

Qu'en penses-tu ?

(1/1) ContextErrorException
Warning: Declaration of Cart::updateQty($quantity, $id_product, $id_product_attribute = NULL, $id_customization = false, $operator = 'up', $id_address_delivery = 0, ?Shop $shop = NULL, $auto_add_cart_rule = true, $skipAvailabilityCheckOutOfStock = false) should be compatible with CartCore::updateQty($quantity, $id_product, $id_product_attribute = NULL, $id_customization = false, $operator = 'up', $id_address_delivery = 0, ?Shop $shop = NULL, $auto_add_cart_rule = true, $skipAvailabilityCheckOutOfStock = false, bool $preserveGiftRemoval = true)

in Cart.php
at ErrorHandler->handleError(2, 'Declaration of Cart::updateQty($quantity, $id_product, $id_product_attribute = NULL, $id_customization = false, $operator = \'up\', $id_address_delivery = 0, ?Shop $shop = NULL, $auto_add_cart_rule = true, $skipAvailabilityCheckOutOfStock = false) should be compatible with CartCore::updateQty($quantity, $id_product, $id_product_attribute = NULL, $id_customization = false, $operator = \'up\', $id_address_delivery = 0, ?Shop $shop = NULL, $auto_add_cart_rule = true, $skipAvailabilityCheckOutOfStock = false, bool $preserveGiftRemoval = true)', '/home/shairbeauty/public_html/override/classes/Cart.php', 0, array('className' => 'Cart', 'classDir' => '/home/shairbeauty/public_html/'))
in PrestaShopAutoload.php line 152
at require_once()
in PrestaShopAutoload.php line 152
at PrestaShopAutoload->load('Cart')
in DebugClassLoader.php line 159
at DebugClassLoader->loadClass('Cart')
at spl_autoload_call('Cart')
in FrontController.php line 416
at FrontControllerCore->init()
in Controller.php line 287
at ControllerCore->run()
in Dispatcher.php line 518
at DispatcherCore->dispatch()
in index.php line 28

 

Share this post


Link to post
Share on other sites

Si tu as juste envoyé les fichier d'une autre version de prestashop sans respecter le protocole à appliquer et d'autant plus sans faire de mise à jour de ta base de données j'ai peur que tu ne fasses que remuer une salade... 😕

Share this post


Link to post
Share on other sites

Oui tu as surement raison, mais j'avoue que je suis complétement démoralisé...

Je pensais être en sécurité en effectuant des sauvegardes sur Amazon S3, mais visiblement ce n'est pas le cas...

Me conseilles tu de réinstaller une nouvelle fois une sauvegarde, et espérer que cette fois cela puisse fonctionner correctement ?

Share this post


Link to post
Share on other sites

Repart de Zéro :

  1. Déplace tous les fichiers actuellement sur l'hébergement dans un autre répertoire commençant par un "_" et avec un nom complexe un pour garder un "instantané" en le mettant à l'abris de divers robots
  2. Renvoie proprement ta sauvegarde.
  3. Supprime les fichiers de cache dans /var/cache

Et dis nous ce qu'il en est.

Précise nous aussi au passage les version PHP & MySQL

Share this post


Link to post
Share on other sites

Daccord je vais faire tout ca.

Je pense que je donnerais réponse demain, car il va me falloir du temps pour le téléchargement de la sauvegarde.

Je vais demander à mon hébergeur de faire l'import à ma place, afin que tout se fasse proprement.

En tout cas merci pour ton aide que tu m'apporte 🙂

 

Share this post


Link to post
Share on other sites

Bonjour,

Voilà, mon hébergeur vient de restaurer ma sauvegarde et voici le message d'erreur :

Fatal error: Uncaught Error: Class 'Cache' not found in /home/shairbeauty/public_html/classes/ObjectModel.php:1999 Stack trace: #0 /home/shairbeauty/public_html/classes/ObjectModel.php(232): ObjectModelCore::getDefinition('Shop') #1 /home/shairbeauty/public_html/classes/shop/Shop.php(128): ObjectModelCore->__construct('1', NULL, NULL) #2 /home/shairbeauty/public_html/classes/shop/Shop.php(413): ShopCore->__construct('1') #3 /home/shairbeauty/public_html/config/config.inc.php(119): ShopCore::initialize() #4 /home/shairbeauty/public_html/index.php(27): require('/home/shairbeau...') #5 {main} thrown in /home/shairbeauty/public_html/classes/ObjectModel.php on line 1999

Version PHP : 7.3
Version MySQL : 5.6

Visiblement le problème serait bien toujours du au Cache.

Quel est ton analyse ?

Share this post


Link to post
Share on other sites

1 hour ago, compas said:

Certe le message d'erreur, mais au moins la version de PHP est maintenant correcte.

Il manque un mot dans votre phrase, c'est toujours le même message d'erreur? Avz-vous revidé le cache apres avoir changé la version de PHP?

Share this post


Link to post
Share on other sites

Oups désolé oui vous avez raison. En effet message d'erreur est le même, et je nai pas vidé le cache après modification de la version PHP.

Vu qu'il y a plusieurs cache, lequel fait il que je vide ? Le répertoire a la Racine du site ? Le répertoire dans /var/cache ?

Share this post


Link to post
Share on other sites

Je viens à l'instant de vider le cache des dossiers PROD & DEV, mais le message d'erreur est toujours le même. J'ai également supprimé le cache de mon navigateur.

Fatal error: Uncaught Error: Class 'Cache' not found in /home/shairbeauty/public_html/classes/ObjectModel.php:1999 Stack trace: #0 /home/shairbeauty/public_html/classes/ObjectModel.php(232): ObjectModelCore::getDefinition('Shop') #1 /home/shairbeauty/public_html/classes/shop/Shop.php(128): ObjectModelCore->__construct('1', NULL, NULL) #2 /home/shairbeauty/public_html/classes/shop/Shop.php(413): ShopCore->__construct('1') #3 /home/shairbeauty/public_html/config/config.inc.php(119): ShopCore::initialize() #4 /home/shairbeauty/public_html/index.php(27): require('/home/shairbeau...') #5 {main} thrown in /home/shairbeauty/public_html/classes/ObjectModel.php on line 1999

 

Share this post


Link to post
Share on other sites

Ok je regarde ca de suite.

Je n'arrive pas à trouver dans quel fichier je peut modirifer cela : define('_PS_CACHE_ENABLED_', '0');

Je ne le trouve pas dans mon fichier defines.inc.php. Dans quel fichier faut il regarder pour prestashop 1.7 ?

Share this post


Link to post
Share on other sites

Je viens donc de suivre les étapes décrites dans le lien que vous m'avez envoyé.

j'ai du ajouter les dossiers cache dans :

/public_html/
/public_html/classes/

Par contre, le fichier cache de mon théme /public_html/themes/montheme/cache n'est pas présent, mais je ne vois pas comment le récupérer...

Aprés avoir fait ces modifications j'ai maintenant ce message d'erreur :

Fatal error: Uncaught Error: Class 'Cache' not found in /home/shairbeauty/public_html/classes/db/Db.php:595 Stack trace: #0 /home/shairbeauty/public_html/classes/shop/Shop.php(345): DbCore->executeS('SELECT s.id_sho...') #1 /home/shairbeauty/public_html/config/config.inc.php(119): ShopCore::initialize() #2 /home/shairbeauty/public_html/index.php(27): require('/home/shairbeau...') #3 {main} thrown in /home/shairbeauty/public_html/classes/db/Db.php on line 595

 

dans le lien que vous m'avez envoyé il est écrit ca

Quote

Une fois ajouté j'ai supprimé le fichier index.php puis à nouveau class_index.php du premier dossier cache

...le problème est que je ne trouve pas ce fichier dans /public_html/cache et je ne sais pas ou le récupérer...

Share this post


Link to post
Share on other sites

Ca va être compliqué d'essayer de te guider à distance sans avoir la main et sans avoir exactement tout ce qui a été fait ou pas fait...

Je te conseille de créer une nouvelle base de données et de tenter une installation fraiche en 1.7.6 pour s'assurer que cela tourne bien sur ton hébergement en vérifiant bien que ce soit en PHP 7.2.

Si cela fonctionne,

  1. Tu écrases l'install fresh avec tes fichiers backup de quand tu étais en 1.7.6
  2. Tu vides les répertoires /var/cache
  3. Tu remplaces également la base de données avec ton backup en 1.7.6
  4. Tu modifies les identifiants de connexion à la base de données pour que le PS se connecte bien sur la dernière que tu as créé (dans le répertoire app il me semble).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More