[Résolu] Fatal error: Call to a member function Execute() on a non-

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.7
#~ Url du site : cnf.cwebh(pt)org
#~ Hébergeur / Soft : c-webhosting(pt)org
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.7
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.4
#~ FileManager: 1.4.3
#~ MenuManager: 1.8.5
#~ MicroTiny: 1.2.5
#~ ModuleManager: 1.5.5
#~ News: 2.12.12
#~ Search: 1.7.8
#~ ThemeManager: 1.1.8
#~ FormBuilder: 0.7.3
#~ TinyMCE: 2.9.12
#~ CGExtensions: 1.35
#~ FrontEndUsers: 1.21.16
#~ CustomContent: 1.9
#~ FEU_Auth_Basic: 1.0
#~ SelfRegistration: 1.7.8
#~ Captcha: 0.4.6
#~ FEUMailer: 0.9.4
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ max_upload_size: 2000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.23-pl0-gentoo
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 8192
#~ memory_limit: 64M
#~ max_execution_time: 30000
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 8M
#~ upload_max_filesize: 2M
#~ session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: fpm-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.67
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour,

Mon hébergeur a déménagé mon site sur un nouveau serveur plus rapide. Il a eu quelques problèmes de PHP qui sont résolus, mais un subsiste toujours.

j'ai le message


Fatal error:
Call to a member function Execute() on a non-object in /home/..../public_html/lib/classes/class.usertagoperations.inc.php(265) : eval()'d code on line 16

quand j'utilise la balise utilisateur comprenant ce code très réduit :

Code :
[== PHP ==]
// connexion
$gCms = cmsms();
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');};
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ".$sql1." order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};

Je serais fort aise de savoir où chercher et/ou de pouvoir indiquer à mon hébergeur ce qui ne joue pas. Il est très ouvert à ce genre de proposition.

Merci d'avance !

Raymond Juillerat
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.7
#~ Url du site : cnf.cwebh(pt)org
#~ Hébergeur / Soft : c-webhosting(pt)org
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.7
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.4
#~ FileManager: 1.4.3
#~ MenuManager: 1.8.5
#~ MicroTiny: 1.2.5
#~ ModuleManager: 1.5.5
#~ News: 2.12.12
#~ Search: 1.7.8
#~ ThemeManager: 1.1.8
#~ FormBuilder: 0.7.3
#~ TinyMCE: 2.9.12
#~ CGExtensions: 1.35
#~ FrontEndUsers: 1.21.16
#~ CustomContent: 1.9
#~ FEU_Auth_Basic: 1.0
#~ SelfRegistration: 1.7.8
#~ Captcha: 0.4.6
#~ FEUMailer: 0.9.4
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ max_upload_size: 2000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.23-pl0-gentoo
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 8192
#~ memory_limit: 64M
#~ max_execution_time: 30000
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 8M
#~ upload_max_filesize: 2M
#~ session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: fpm-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.67
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour,

Mon hébergeur a déménagé mon site sur un nouveau serveur plus rapide. Il a eu quelques problèmes de PHP qui sont résolus, mais un subsiste toujours.

j'ai le message


Fatal error:
Call to a member function Execute() on a non-object in /home/..../public_html/lib/classes/class.usertagoperations.inc.php(265) : eval()'d code on line 16

quand j'utilise la balise utilisateur comprenant ce code très réduit :

Code :
[== PHP ==]
// connexion
$gCms = cmsms();
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');};
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ".$sql1." order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};

Je serais fort aise de savoir où chercher et/ou de pouvoir indiquer à mon hébergeur ce qui ne joue pas. Il est très ouvert à ce genre de proposition.

Merci d'avance !

Raymond Juillerat
#2
Bonjour,
a vue de nez :
remplace $dbretour =& $db->Execute($sql); par $dbretour = $db->Execute($sql);
Où est initialisée la variable $sql1?

<edit>A l'occasion, supprime aussi $gCms=cmsms()</edit>
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
#2
Bonjour,
a vue de nez :
remplace $dbretour =& $db->Execute($sql); par $dbretour = $db->Execute($sql);
Où est initialisée la variable $sql1?

<edit>A l'occasion, supprime aussi $gCms=cmsms()</edit>
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
#3
Merci, les suggestions sont intéressantes et la réaction rapide.

Je les avais toutefois déjà lues ailleurs dans ce forum et même appliquées. Quand au & dans le code je ne l'avais d'abord pas, puis suite à l'examen d'autres suggestions du forum je l'ai ajouté. Ne sert à rien

Le $sql1 n'est pas la source du problème. D'ailleurs dans mon environnement local, le code fonctionne parfaitement avec cette variable non-initialisée. Je l'ai quand même enlevé.
J'ai aussi enlevé l'instruction $gCms=cmsms(). Ça ne change rien non plus.

Voici l'essai de ces dernières minutes :

Code :
[== PHP ==]
// connexion
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');};
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject'  order by `option_id` ASC";  
// exécution
   $dbretour = $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};

Mais je ne vais pas présenter toutes les variantes essayées.

Donc je suppose quand même le problème dans la configuration php qui est la seule chose qui a changé à cause de la migration de serveur chez mon fournisseur.

Merci de toute remarque à ce sujet

Raymond Juillerat
#3
Merci, les suggestions sont intéressantes et la réaction rapide.

Je les avais toutefois déjà lues ailleurs dans ce forum et même appliquées. Quand au & dans le code je ne l'avais d'abord pas, puis suite à l'examen d'autres suggestions du forum je l'ai ajouté. Ne sert à rien

Le $sql1 n'est pas la source du problème. D'ailleurs dans mon environnement local, le code fonctionne parfaitement avec cette variable non-initialisée. Je l'ai quand même enlevé.
J'ai aussi enlevé l'instruction $gCms=cmsms(). Ça ne change rien non plus.

Voici l'essai de ces dernières minutes :

Code :
[== PHP ==]
// connexion
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');};
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject'  order by `option_id` ASC";  
// exécution
   $dbretour = $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};

Mais je ne vais pas présenter toutes les variantes essayées.

Donc je suppose quand même le problème dans la configuration php qui est la seule chose qui a changé à cause de la migration de serveur chez mon fournisseur.

Merci de toute remarque à ce sujet

Raymond Juillerat
#4
Salut,

Déjà, il faudrait utiliser LIKE pour une égalité lorsque c'est du texte :
Code :
[== Indéfini ==]
where `name` = 'destination_subject' => where `name` LIKE 'destination_subject'

Ensuite, tu concatènes des chaines pour passer des paramètres : pas bien. Utilise des paramètres dans la requete.

Code :
[== Indéfini ==]
$sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ".$sql1." order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql);

=>

$sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ? order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql, array($sql1));

Alors ton code teste si tu as un retour, si non, alors un fais un die, puis on boucle sur le résultat... y a encore un souci là aussi... ferme l'accolade après le die, puis tu fais un "else" pour traiter le résultat.

Es-tu certain que tes paramètres de connexion MySQL sont les bons ?
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
#4
Salut,

Déjà, il faudrait utiliser LIKE pour une égalité lorsque c'est du texte :
Code :
[== Indéfini ==]
where `name` = 'destination_subject' => where `name` LIKE 'destination_subject'

Ensuite, tu concatènes des chaines pour passer des paramètres : pas bien. Utilise des paramètres dans la requete.

Code :
[== Indéfini ==]
$sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ".$sql1." order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql);

=>

$sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` = 'destination_subject' ? order by `option_id` ASC";  
// exécution
   $dbretour =& $db->Execute($sql, array($sql1));

Alors ton code teste si tu as un retour, si non, alors un fais un die, puis on boucle sur le résultat... y a encore un souci là aussi... ferme l'accolade après le die, puis tu fais un "else" pour traiter le résultat.

Es-tu certain que tes paramètres de connexion MySQL sont les bons ?
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
#5
Merci,

Je pense que les paramètres de connexion MySql sont en ordre puisque, à part ce problème, le site fonctionne parfaitement ce qui ne serait pas le cas sinon, je pense.

J'ai essayé like au lieu de = , je sais c'est une option valable pour du texte, Ça ne change rien du tout.

Quand à choisir else après die pour éviter d'utiliser des variables non-valables, je l'ai maintenant essayé sans que ça ne me modifie quoi que ce soit.

Voici quand même la nouvelle version du script
Code :
[== PHP ==]
// connexion
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');}
else
{
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` like 'destination_subject'  order by `option_id` ASC";  
// exécution
   $dbretour = $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
else
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};  
};

Merci grandement, mais je me retrouve gros-Jean comme devant

Bien à vous

Raymond Juillerat
#5
Merci,

Je pense que les paramètres de connexion MySql sont en ordre puisque, à part ce problème, le site fonctionne parfaitement ce qui ne serait pas le cas sinon, je pense.

J'ai essayé like au lieu de = , je sais c'est une option valable pour du texte, Ça ne change rien du tout.

Quand à choisir else après die pour éviter d'utiliser des variables non-valables, je l'ai maintenant essayé sans que ça ne me modifie quoi que ce soit.

Voici quand même la nouvelle version du script
Code :
[== PHP ==]
// connexion
  $db  = cmsms()->GetDb();
if ($db===false)
{ die('Erreur SQL en ouverture !<br>');}
else
{
// requête
   $sql= "select * from `".cms_db_prefix()."module_fb_field_opt` where `name` like 'destination_subject'  order by `option_id` ASC";  
// exécution
   $dbretour = $db->Execute($sql);
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
else
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};  
};

Merci grandement, mais je me retrouve gros-Jean comme devant

Bien à vous

Raymond Juillerat
#6
Code :
[== Indéfini ==]
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
else
{
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};  
}

ca marchera mieux comme ca Wink. Ton script était erroné sans le { apres le else et n'aurait pas pu fonctionner.

Le like fonctionne aussi et est plus correct même si = fonctionne.
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
#6
Code :
[== Indéfini ==]
if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }
// résultats
else
{
while ($rs = $dbretour->FetchRow())
{
      echo "output: dans [".$rs['name']."] il y a ".$rs['value']." = ".$rs['option_id']." :: ".$qrs."<BR>";
};  
}

ca marchera mieux comme ca Wink. Ton script était erroné sans le { apres le else et n'aurait pas pu fonctionner.

Le like fonctionne aussi et est plus correct même si = fonctionne.
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
#7
Merci,

Maintenant, c'est tout bon.

Bien à toi, salutations à tous

Raymond
#7
Merci,

Maintenant, c'est tout bon.

Bien à toi, salutations à tous

Raymond


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)