THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je me permets de vous solliciter pour m'aider à y voir plus clair avec ces erreurs que je ne comprends pas.

J'ai passé l'un de mes sites de la 2.1.5 vers la 2.3.4 et cela m'a crée deux problèmes.

Niveau Front, mon site est inaccessible :

Warning: PDO::__construct(): in D:\Commun\Informatique\Sites\citerneov2\core\vendor\propel\propel\src\Propel\Runtime\Connection\PdoConnection.php on line 47

Fatal error: in D:\Commun\Informatique\Sites\citerneov2\core\vendor\propel\propel\src\Propel\Runtime\Connection\ConnectionFactory.php on line 43

En mode développement, je crois comprendre que ça vient d'un module custom qui vérifie si on visite le site depuis un mobile :

Whoops, looks like something went wrong.
1/1
ClassNotFoundException in DetectMobileLoop.php line 35:
Attempted to load class "MobileDetect" from namespace "Detection".
Did you forget a "use" statement for another namespace?

Ce que je ne me figure pas, c'est que les use sont bien en place et que ça marchait très bien avant la MAJ. Voici le fichier incriminé :

<?php

namespace DetectMobile\Loop;

use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Type\TypeCollection;
use Thelia\Type;
use Detection\MobileDetect;

class DetectMobileLoop extends BaseLoop implements PropelSearchLoopInterface {

    public $countable = true;
    public $timestampable = false;
    public $versionable = false;

    public function getArgDefinitions()
    {
        return new ArgumentCollection(
        );
    }

    /**
     * @return Thelia\Core\Template\Element\LoopResult
     */
    public function buildModelCriteria() {
    }

    public function parseResults(LoopResult $loopResult)
    {
        $support = new MobileDetect();
        $is_mobile = 0;
        $is_tablet = 0;
        $is_phone = 0;
        if($support->isMobile())
        {
          $is_mobile = 1;
        }
etc...

Bien sur, mon site marche très bien si je désactive le loop qui vérifie si on est sur mobile.

Autrement, j'ai un problème avec le BO : quand j'y accède en mode développement, le BO apparaît mais le menu principal ne s'affiche pas correctement. Au lieu d'être noir et sur le côté gauche, il est blanc et en haut, comme si la classe Bootstrap buggait...

Last edited by HeishPi (26-03-2019 13:08:55)


Développeur web Junior

Offline


A priori, le problème vient du module DetectMobile. Il faudrait contacter son auteur pour qu'il t'aide à trouver l'erreur.


OpenStudio Toulouse

Offline


Malheureusement l'auteur est l'ancien développeur de ma boîte, qui est injoignable big_smile


Développeur web Junior

Offline

Offline


Attention de vérifier ta version de PHP: Thelia n'est pas encore prêt pour PHP 7.2


OpenStudio Toulouse

Offline


Pas de soucis de ce côté là, notre serveur est en 5.6 et la seule chose qui a changé est la version de Thelia (pour ce site tout spécialement). Je ne m'explique toujours pas qu'il ne veuille pas charger cette maudite classe, grr


Développeur web Junior

Offline


Bonjour,

J'ai toujours une erreur semblable sur certains sites que je passe en version 2.3.4. Sur le site actuel, je n'ai pas de module MobileDetect qui fait tout planter, mais j'ai sensiblement les mêmes défauts.
Accéder au site local par l'URL habituelle m'obtient cette erreur :

Warning: PDO::__construct(): in D:\Commun\Informatique\Sites\guerinetv2\core\vendor\propel\propel\src\Propel\Runtime\Connection\PdoConnection.php on line 47

Fatal error: in D:\Commun\Informatique\Sites\guerinetv2\core\vendor\propel\propel\src\Propel\Runtime\Connection\ConnectionFactory.php on line 43

Si je passe en mode développement, j'ai accès au site et au BO (mais celui-ci a toujours son menu qui déconne).

J'ai bien vidé mes caches, j'ai fait un "php Thelia cache:clear" depuis le serveur qui accueille le site en local mais rien à faire.
J'ai même tenté un "php Thelia cache:clear --env=prod" mais cette commande m'obtient une erreur dans le CMD très ressemblante à celle ci-dessus : un problème dans "PdoConnection.php on line 47"...

Une idée...?


Développeur web Junior

Offline


Pour vider les caches, tu peux aussi supprimer le contenu du dossier "cache"


OpenStudio Toulouse

Offline


Je viens d'essayer et malheureusement le problème persiste. Je suis tout de même pas le seul à qui ça arrive lors d'un passage en 2.3.4, si...?
Quelle différence de fonctionnement a le mode développement pour que le site soit totalement accessible avec ?


Développeur web Junior

Offline


Permissions sur les répertoires ?


OpenStudio Toulouse

Offline


On travaille sur un environnement Windows, et on fait tout avec le compte Administrateur du serveur ! Normalement, pas de problèmes de ce côté là. Et pour être honnête, je ne comprends pas bien la question ? neutral


Développeur web Junior

Offline


Idée : tu n'aurais pas un fichier local/config/database_dev.yml ET un fichier local/config/database.yml ?


OpenStudio Toulouse

Offline


Nope, j'ai "database.yml", "database.yml.sample" et "database_prod.yml" (qui contient la même chose que le premier). A première vue, tout va bien dans ce dossier


Développeur web Junior

Offline


Ce qui se passe c'est que la connexion à la BD échoue. Si elle echoue c'est qu'elle n'a pas les bons paramètres. Donc je te conseille de supprimer database_prod.yml et de ne garder que database.yml, qui sera utilisé dans tous les cas, car pour le moment il n'est utilisé qu'en dev !

On verra bien si ça change quelque chose.


OpenStudio Toulouse

Offline


Oui j'en ai déduis la même chose mais je ne me figure pas pourquoi. Les modifications apportées à la BDD par la MAJ peuvent provoquer un problème pareil ?

Malheureusement la suppression de ce fichier ne change rien non plus neutral

Et autre fait intéressant : le menu du Back Office ne déconne pas si je l'ouvre avec Firefox (au lieu de Chrome). Et là je suis encore une fois incapable d'expliquer pourquoi. Un problème avec le cache du navigateur, peut-être ?


Développeur web Junior

Offline


Si on commence à rentrer dans des trucs ésotériques, je ne vais plus pouvoir t'aider.


OpenStudio Toulouse

Offline


Et bien, figure-toi qu'on est déjà dans la 4eme dimension. Après un nouvel essai de la suppression complète du contenu du dossier racine/cache, pouf, le problème a disparu. Le site s'affiche convenablement, c'est à n'y rien comprendre...

Malheureusement le problème du BO persiste. Je ne comprends pas pourquoi puisque j'utilise bien les templates par défaut, et ces derniers sont ceux issus du dossier thelia 2.3.4. Qu'est-ce qui pourrait expliquer que le BO s'affiche correctement sous Firefox (que j'utilise peu, c'est vrai), mais pas sous Chrome (que j'utilise par défaut) ?


Développeur web Junior

Offline


J'ai résolu mon problème de Back Office : je penchais à l'origine pour un problème de cache, et j'avais raison. Si ce n'est que, en fait, c'est le cache du navigateur qui me cassait le menu de Thelia tongue
Une simple suppression des données de navigation a bouclé l'affaire. Merci quand même de ton aide, Roadster !


Développeur web Junior

Offline


C'est quoi ton navigateur ?


OpenStudio Toulouse

Offline


Chrome


Développeur web Junior

Offline


Bizarre... Tu as des plugins installés dans Chrome ?


OpenStudio Toulouse

Offline


Non, même pas ! J'ai tout viré il y a quelque temps, le navigateur est tout frais tout neuf ! C'est assez bizarre mais finalement pas si dérangeant, fallait juste le savoir...!


Développeur web Junior