On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Bon, j’ai réussi à faire une config qui s’installe sur online.net mais j’ai un problème lors de l’accès au gestionnaire.

    Je rentre mon login et mon mot de passe et j’ai un message d’erreur :


    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in settings.inc.php on line 9

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in settings.inc.php on line 10

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/62/o/s/e/oself.com/modx/manager/includes/settings.inc.php:9) in config.inc.php on line 38

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in login.processor.php on line 69

    Voici le contenu du fichier settings.inc.php :
    <?php
    
    // get the settings from the database.
    $settings = array();
    if ($modx && count($modx->config)>0) $settings = $modx->config;
    else{
    	$sql = "SELECT setting_name, setting_value FROM modx_system_settings";
    	$rs = mysql_query($sql);
    	$number_of_settings = mysql_num_rows($rs);
    	while ($row = mysql_fetch_assoc($rs)) {
    		$settings[$row['setting_name']] = $row['setting_value'];
    	}
    }
    
    extract($settings, EXTR_OVERWRITE);
    
    // setup default site id - new installation should generate a unique id for the site.
    if(!isset($site_id)) $site_id = "MzGeQ2faT4Dw06+U49x3";
    
    
    ?>
    


    et un extrait du fichier login.processor.php (lignes 67, 68 et 69) :
    $sql = "SELECT ".$table_prefix."manager_users.*, ".$table_prefix."user_attributes.* FROM ".$table_prefix."manager_users, ".$table_prefix."user_attributes WHERE ".$table_prefix."manager_users.username REGEXP BINARY '^".$username."$' and ".$table_prefix."user_attributes.internalKey=".$table_prefix."manager_users.id;";
    $rs = mysql_query($sql);
    $limit = mysql_num_rows($rs);
    

    • Bon, a priori, il s’agit d’un problème specifique à online.net qui nous donne une base de données avec un nom du genre `mondomaine.com`. Avec un point dedans.
      Quand je fais une requete du genre "SELECT * FROM `mondomaine.com`.nomtable" il me renvoie une erreur : "Nom de table incorrect".
      Quand je fais la même requete sans le nom de la base "SELECT * FROM nomtable" ça fonctionne sans problème.
      Mon soucis est que MODx effectue toutes ses requête en incluant le nom de la base.
      Existe-t-il une solution comme modifier un seul fichier ou faut-il modifier tous les fichiers où il y a une requête à la base de données ?
      Merci
      Matthieu
      • Salut

        Essaye du coté de la fonction : getFullTableName dans document.parser.class.inc.php

        regarde si il y a pas moyen de la modifié car elle semble etre utilisé systématiquement pour retrouvé le nom de la table avec le prefixe et le nom de la base

        	function getFullTableName($tbl){
        		return $this->dbConfig['dbase'].".".$this->dbConfig['table_prefix'].$tbl;
        	}


        Essaye de virer
        $this->dbConfig['dbase'].".".


        Aour
        • Merci, j’avais justement trouvé cette fonction mais ce n’est pas le seul accès aux bases. Il faut changer toutes les requêtes directes.
          Je m’y suis mis mais j’ai toujours un pb d’accès. Je fais suivre sur ce post et je joindrai la version online.net qui fonctionne dès que possible.

          Matthieu
          • Re

            Il y a donc du ménage a faire dans modx pour que tous les appels à la DB soit selon le meme protocole.

            Aour
            • Ouf, ça avance, tout ça n’était en fait qu’un problème de pu.... de guillemets (`) dans le nom de la base qui fait foirer la sélection de la base de données.
              Maintenant j’ai bien accès au gestionnaire. C’est un peu lent mais c’est dû à l’hébergeur. De plus, il faut encore que je corrige les envois d’email car online.net n’accepte pas l’utilisation de la fonction mail() (soit-disant pour éviter les spams) et la remplace par une fonction email().
              Promis, je post bientôt la version online.net
              Matthieu
              • merci à toi

                Aour
                • Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in settings.inc.php on line 9


                  Une cause typique de ce message d'erreur lors d'une migration de site est lorsque le fichier de connexion à la base de données (manager/includes/config.inc.php) fait appel à un utilisateur MySQL qui avait été créé sur l'ancien hébergement et que l'on a oublié de recréer sur le nouvel hébergement.