JoliBazar Posted October 30, 2023 Share Posted October 30, 2023 Bonjour à tous, Après quelques grosses frustrations de personalisation du frontend sous Prestashop 8.1.2, j'ai décidé de tenter le coup de "downgrader" vers Prestashop 1.6 qui est la dernière version utilisant du code PHP "legacy" et non le framework Symphony. Je suis conscient que la 1.6 date, mais nombre d'astuces d'édition de code trouvées sur Internet n'ont pas encore été adaptées aux version 1.7 et 8. J'ai pu installer la version 1.6.1.24 avec succès (sur site distant), puis j'ai importé mon site en construction qui tournait jusqu'à présent avec la version 8.1.2. J'ai également réalisé une installation de la 1.6.1.24 en local (localhost) afin de pouvoir générer un dump. Le frontend reste accessible, mais impossible d'accéder à l'admin (Erreur 500). Après activation du mode débogage, ceci vient à la place d'erreur 500 : [PrestaShopException] No access reference in table module_access for id_module 36. at line 2538 in file classes/module/Module.php 2533. self::$cache_permissions[$employee->id_profile][$row['id_module']]['uninstall'] = $row['uninstall']; 2534. } 2535. } 2536. 2537. if (!isset(self::$cache_permissions[$employee->id_profile][$id_module])) { 2538. throw new PrestaShopException('No access reference in table module_access for id_module '.$id_module.'.'); 2539. } 2540. 2541. return (bool)self::$cache_permissions[$employee->id_profile][$id_module][$variable]; 2542. } 2543. ModuleCore::getPermissionStatic - [line 3283 - classes/controller/AdminController.php] - [2 Arguments] AdminControllerCore->getModulesList - [line 2329 - classes/controller/AdminController.php] - [1 Arguments] AdminControllerCore->renderModulesList - [line 2063 - classes/controller/AdminController.php] AdminControllerCore->initContent - [line 136 - controllers/admin/AdminLoginController.php] AdminLoginControllerCore->initContent - [line 189 - classes/controller/Controller.php] ControllerCore->run - [line 367 - classes/Dispatcher.php] DispatcherCore->dispatch - [line 58 - admin/index.php] L'erreur serait donc liée au module 36 qui est "gridhtml", dont le dossier existe bien. Comment j'ai réalisé la migration des données Les tables ont été importées en détruisant les enregistrements créés par l'installateur (TRUNCATE nom_de_la_table), puis en injectant les enregistrements provenant de la version 8.1.2 avec "INSERT INTO nom_de_la_table", moyennant quelques retouches mineures. Certaines tables, notamment celles concernant les (hook_...) et (module_...) ont été laissées dans la version 1.6.1.24. Les clés n'ont pas pu été restaurées avec les "ALTER TABLE ..." qui se trouvaient en fin de dump car la requête SQL échoue lorsque des clés primaires sont définies sur deux champs. L'installateur de Prestashop avait créé divers profils d'utilisateurs ; je n'ai conservé que celui avec id_profile : 1. Il est décrit comme "SuperAdmin" par la table id_profile_lang. De même je n'ai qu'un seul employé (table employee) avec id_employee : 1 et id_profile : 1. Curieusement, dans la table module_access, le id_profile était systématiquement sur 2. J'ai réinjecté des enregistrements avec id_profile mis sur 1 et il y a bien un id_profile 1 pour le id_module 36. Je ne comprends pas d'où le problème peut venir, d'autant plus que l'affichage de la page d'accès l'admin ne devrai en soi pas requiérir de droits particuliers. Merci d'avance pour votre aide. N.B. Au niveau du frontend, un autre souci que je rencontre est celui de la redirection du /index.php vers /fr/index.php qui ne se fait pas. Mon site est multilingue, mais l'installateur de Prestashop 1.6 crée par défraut un site monolingue. Mais ceci est une autre histoire. Link to comment Share on other sites More sharing options...
Eolia Posted October 31, 2023 Share Posted October 31, 2023 Vous avez le module 36 qui n'a pas de droits enregistrés dans la table module_access, ajoutez-le. Et si vous voulez avoir une 1.6 un peu plus à jour, je vous invite à faire un tour par ici : https://eoliashop.com/phenixsuite PS: normalement en tant qu'admin vous avez tous les droits même si le module est manquant dans cette table. Link to comment Share on other sites More sharing options...
JoliBazar Posted November 1, 2023 Author Share Posted November 1, 2023 Merci. Dans la table module_access, j'avais bien un module 36. Cela reste donc un mystère pour moi. Je repars sur une installation à neuf et importerai les données de manière plus progressive. J'ai également téléchargé la PhenixSuite 1.6.2.19 depuis cette page mentionnant les change logs : https://bb.enter-solutions.net/topic/1117/informations-générales ( Lien direct de téléchargement de la dernière version: https://devcustom.net/public/scripts/dl.php?f=core&v=latest ) Après comparaison (avec FreeFileSync) de PrestaShop 1.6.1.24 et PhenixSuite 1.6.2.19, je vois que cette dernière ajoute plusieurs modules dont je n'ai pas forcément besoin. Un sytème allégé plutôt que boursouflé a ma préférence. Je vais donc rester sur Prestashop 1.6.1.24, mais n'hésiterai pas jeter un oeil aux fichiers édités de la PhenixSuite, spécialement si je rencontre des bugs. Link to comment Share on other sites More sharing options...
Mediacom87 Posted November 1, 2023 Share Posted November 1, 2023 il y a 4 minutes, JoliBazar a dit : Un sytème allégé plutôt que boursouflé a ma préférence. Plus de modules dans le zip ne veut rien dire sur ce point. Car justement cette version épure grandement la 1.6 de toutes les attaches à Addons de PrestaShop, elle permet aussi une compatibilité PHP8. Les modules ajoutés sont pour la plupart des adaptations de module pour conserver une compatibilité avec PS 16 qui fut abandonné par leurs développeurs et dont les utilisateurs ont besoin, mais rien ne vous empêche, et je vous le conseille fortement, de supprimer tous les modules qui ne vous servent à rien. Link to comment Share on other sites More sharing options...
JoliBazar Posted November 2, 2023 Author Share Posted November 2, 2023 On 11/1/2023 at 8:13 PM, Mediacom87 said: Plus de modules dans le zip ne veut rien dire sur ce point. Car justement cette version épure grandement la 1.6 de toutes les attaches à Addons de PrestaShop, elle permet aussi une compatibilité PHP8. Les modules ajoutés sont pour la plupart des adaptations de module pour conserver une compatibilité avec PS 16 qui fut abandonné par leurs développeurs et dont les utilisateurs ont besoin, mais rien ne vous empêche, et je vous le conseille fortement, de supprimer tous les modules qui ne vous servent à rien. Merci, c'est bon à savoir. Ayant aperçu un module Colissimo, et n'étant pas en France, je craignais que la PhenixSuite pré-configure l'installation avec des réglages pour la France. Non sans mal, j'ai réinstallé Prestashop 1.6.1.24. Me trouvant dans un pays où diverses langues sont installées par défaut, les packs de langue ne se téléchargeaient pas ; peut-être en raison d'un proxy chez l'hébergeur ? M'insipirant d'une vidéo pour le même problème sous Prestashop 1.7, j'ai alors procédé à l'édition des lignes 342 à 352 du fichier /install/models/install.php, en mettant en commentaire certaines lignes: //if (InstallSession::getInstance()->safe_mode) { Language::checkAndAddLanguage($iso, false, true, $params_lang); //} else { Language::downloadAndInstallLanguagePack($iso, _PS_INSTALL_VERSION_, $params_lang); //} Language::loadLanguages(); Tools::clearCache(); /* if (!$id_lang = Language::getIdByIso($iso, true)) { throw new PrestashopInstallerException($this->language->l('Cannot install language "%s"', ($xml->name) ? $xml->name : $iso)); } */ Puis redébuté toute l'installation. Cela a permis d'installer Prestashop 1.6, mais le menu de langue était alors dupliqué, et la langue principale y aparaissait plusieurs fois. Las de commencer par des problèmes avec Prestashop 1.6, j'ai décidé de retourner vers la version 8.1.2, où mon projet tourne même s'il est imparfait. Il y quand même eu des améliorations significatives avec les versions récentes, dont la qualité de l'installateur, qui permet dès le départ de choisir ce que l'on souhaite et permet ainsi d'éviter certains ajouts superflus. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now