David Simon Posted February 26 Share Posted February 26 Type d’install (nouvelle/MàJ) : Migration site Version de PS : 1.6.1.24 URL du site concerné : https://boutique-mpack.com/ Thème (défaut/perso) : vp_perfume Code (original/modifié) : juste un module de devis custom Hébergement : plesk Version de PHP : 5.6.40 Version de MySQL : 10.3.39-MariaDB-0ubuntu0.20.04.2 Navigateur(s) concerné(s) : Chrome Bonjour, J'ai un problème sur un site presta que l'on a repris récemment, la consultation des factures ne fonctionne pas côté front office (elle fonctionne très bien côté back office). Lorsque l'on clique sur une facture de la page https://boutique-mpack.com/fr/historique-des-commandes, cela nous amène vers une page 404 : https://boutique-mpack.com/fr/index.php?controller=pdf-invoice&id_order=4 J'ai trouvé pas mal de problèmes similaires sur Internet, cela gravite souvent autour de l'écriture des URL et du mod_rewrite. Nous avons d'autres prestashops qui fonctionnent très bien sur ce même serveur et j'ai tenté de réinitialiser les liens, les regénérer, regénérer le htaccess et vider le cache, mais cela ne change rien. Côté logs, je n'obtiens pas grand-chose, juste un 404 GET /fr/index.php?controller=pdf-invoice&id_order=4 HTTP/2.0. Je ne sais pas si cela fonctionnait avant la migration, nous avons migré il y a quelques mois déjà. Comment pourrais-je trouver l'origine du problème ? Je vous remercie d'avance pour toute aide que vous pourriez m'apporter ! Link to comment Share on other sites More sharing options...
Eolia Posted February 26 Share Posted February 26 Activer le mode debug pour avoir éventuellement plus d'infos. Vérifier que le contrôleur PdfInvoiceController.php est bien présent dans /controllers/front/ Passer en PhenixSuite serait aussi une bonne idée Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 Salut Eolia, merci pour ta réponse. J'ai passé la boutique en debug. C'est étrange, il n'y avait pas de ligne mode_dev dans le fichier defines.inc.php, du coup je l'ai rajoutée ici, après le disclaimer : define('_PS_MODE_DEV_', true); /* Debug only */ if (!defined('_PS_MODE_DEV_')) { define('_PS_MODE_DEV_', false); } Par contre en 1.7 ou 1.8, le mode debug est visible dans le back office avec une ligne en bas de l'écran avec les temps de réponse et erreurs, et là ce n'est pas le cas, je n'ai pas l'impression que je soie réellement passé en mode debug, à moins que ce ne soit la 1.6 qui soit comme ça... Mais du coup je n'ai pas plus de logs d'erreurs après avoir reproduit le problème. J'ai vérifié le fichier PdfInvoicecontroller.php est bien présent au bon endroit. Ai-je moyen de placer une ligne de code quelque part, juste avant l'appel à l'URL en question pour debugger et voir pourquoi on arrive en 404 ? Du coup j'ai jeté un œil à phenix suite, ça permet de se maintenir à jour sans upgrader la version de PHP ? Le problème c'est qu'il y a un module de devis qui a été développé et cela représenterait pas mal de boulot pour l'adapter à la 1.8... Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 J'ai oublié un détail très important ! Désolé c'était vendredi soir que j'avais commencé à regarder... Lorsque je désactive l'URL simplifiée, cela fonctionne. Par contre on voit bien que le site a été fait pour fonctionner avec l'url simplifiée activée vu que plein d'autres pages ont des liens morts si je la désactive... Link to comment Share on other sites More sharing options...
Eolia Posted February 26 Share Posted February 26 Donc vous devez avoir des overrides qui fichent le bazar (sur PdfInvoiceController ou frontcontroller ou dispatcher ou hook ou link...) PhenixSuite permet de rester en 1.6 avec la possibilité d'utiliser PHP 8 et plein de fonctionnalités en plus, inexistantes sur les 1.7+ Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 Je vais jeter un oeil à phenixsuite, ça peut être intéressant ! Alors j'ai regardé les override, il y a plein de dossiers vides, notamment dans controller/front, mais pas de fichier. Le seul fichier c'est classes/order/OrderPayment.php <?php class OrderPayment extends OrderPaymentCore { /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'order_payment', 'primary' => 'id_order_payment', 'fields' => array( 'order_reference' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 100), 'id_currency' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'amount' => array('type' => self::TYPE_FLOAT, 'validate' => 'isNegativePrice', 'required' => true), 'payment_method' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'), 'conversion_rate' => array('type' => self::TYPE_INT, 'validate' => 'isFloat'), 'transaction_id' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 254), 'card_number' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 254), 'card_brand' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 254), 'card_expiration' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 254), 'card_holder' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 254), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), ), ); } Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 Je me demande si le problème ne vient pas d'ici : normalement l'URL devrait être simplifiée sur cette page : mais elle est https://boutique-mpack.com/index.php?controller=pdf-invoice&id_order=4 Ne devrait-elle pas être simplifiée aussi ? Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 Ça c'est l'URL qui pose problème : <a href="{$link->getPageLink('pdf-invoice', true, NULL, "id_order={$order.id_order}")}" title="{l s='Invoice'}" target="_blank"><img src="{$img_dir}icon/pdf.gif" alt="{l s='Invoice'}" class="icon" /></a> Ça c'est une URL de la même page qui fonctionne (retour au compte) : <li><a href="{$link->getPageLink('my-account.php', true)}"><img src="{$img_dir}icon/my-account.gif" alt="" class="icon" /> {l s='Back to Your Account'}</a></li> Link to comment Share on other sites More sharing options...
David Simon Posted February 26 Author Share Posted February 26 (edited) J'ai essayé de remplacer par le history.tpl par défaut, mais ça ne fonctionne pas non plus. J'ai regardé sur un autre presta, l'URL est bien <a target="_blank" href="domaine/index.php?controller=pdf-invoice?id_order=12">Téléchargez votre facture au format PDF</a> Donc ça ne doit pas venir directement du fichier tpl... Edited February 26 by David Simon (see edit history) 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