Résoudre les problèmes

Erreur « Shop not found at line xxx in file classes/shop/Shop.php »

Vérifié le 3 min de lecture base de données erreurs PrestaShop

Shop not found at line xxx in file classes/shop/Shop.php indique que PrestaShop n'a pas pu charger une boutique valide. L'exception ne prouve pas à elle seule que PS_SHOP_DEFAULT en est l'origine première.

En front office, PrestaShop essaie d'abord d'identifier la boutique correspondant au domaine et au chemin demandés. Si cette boutique n'est pas résolue, ne se charge pas ou n'est pas active, il essaie d'ouvrir la boutique définie par PS_SHOP_DEFAULT ; l'exception apparaît lorsqu'il ne peut pas non plus charger cette boutique de repli.

// No shop found ... too bad, let's redirect to default shop
$default_shop = new Shop((int) Configuration::get('PS_SHOP_DEFAULT'));

// Hmm there is something really bad in your Prestashop !
if (!Validate::isLoadedObject($default_shop)) {
    throw new PrestaShopException('Shop not found');
}

Conservez l'URL exacte et la trace avant de modifier la base de données. Dans une installation multiboutique, vérifiez ces relations avec le préfixe réel des tables :

  • Dans PREFIX_shop_url, examinez domain, domain_ssl, physical_uri, virtual_uri, main et active pour l'hôte et le chemin qui échouent.
  • Dans PREFIX_shop, confirmez que la boutique obtenue et la boutique par défaut existent, sont actives et ne sont pas marquées comme supprimées.
  • Dans PREFIX_configuration, listez toutes les lignes PS_SHOP_DEFAULT avec id_shop_group et id_shop. La valeur effective peut dépendre du contexte de groupe ou de boutique.

Ne modifiez pas la première ligne trouvée et ne copiez pas l'identifiant d'une autre boutique sans vérifier le contexte. Faites d'abord une sauvegarde de la base de données et testez la correction sur un clone ; une URL ou une boutique par défaut incorrecte peut affecter toutes les requêtes du front office.

Si vous ne parvenez pas à déterminer quelle portée résout Configuration::get(), contactez l'assistance en indiquant le domaine, le chemin qui échoue, l'heure approximative et la trace. N'envoyez pas d'identifiants dans le ticket.

Vérifier le domaine et le chemin avant de toucher aux données

Si l'erreur est survenue après un changement de domaine, confirmez d'abord vers quel serveur arrive la requête et quelle racine de documents elle utilise. Une base correcte n'évite pas l'erreur si vous ouvrez une autre copie de la boutique avec un hôte qui n'y est pas enregistré.

Après la correction minimale, testez HTTP/HTTPS, la variante avec ou sans www choisie, une page intérieure et l'administration. En multiboutique, vérifiez aussi les boutiques qui ne devaient pas changer et que la boutique de repli n'envoie pas le visiteur vers un autre catalogue.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.