Erreur fatale : Erreur non détectée : le nom de la fonction doit être une chaîne dans /htdocs/.../core/lib/functions.lib.php(8288)

Salut!
Depuis 2 jours j’arrive pas à lancer mon instance de dolibarr version 15.0.1 hébergé chez LWS.
Je reçois l’erreur suivante et LWS dit que ce n’est pas à son niveau, c’est plutôt un soucis Dolibarr :
Erreur fatale : Erreur non détectée : le nom de la fonction doit être une chaîne dans /htdocs/…com/core/lib/functions.lib.php(8288) : eval()‹ d code : 1 Stack trace : #0 /htdocs/…com/core/lib/functions.lib.php(8288): eval() #1 /htdocs/…com/core/lib/functions.lib.php( 8182): dol_eval(‹ if(!(1==1));$d=… ›, 0, 1, ‹ 2 ›) #2 /htdocs/…com/core/class/ menubase.class.php(679): verifCond(‹ 1==1));$d=base6… ›) #3 /htdocs/…com/core/menus/standard/eldy_menu.php (113) : Menubase->menuLoad(‹ home ›, ‹  ›, 0, ‹ eldy ›, Array) #4 /htdocs/…com/main.inc.php(1271) : MenuManager->loadMenu () #5 /htdocs/…com/index.php(31): requiert( ›/htdocs/dilibar…') #6 {main} ajouté**/htdocs/…com/core/lib/functions.lib.php(8288) : eval()'d code** sur la ligne 1

Quelqu’un d’autre rencontre le même problème? Si oui, quelle est la solution?
Merci!

cette erreur signifie que vous essayez d’accéder à un tableau comme s’il s’agissait d’une fonction. Par exemple, si vous écrivez $_COOKIE (‹ CaptchaResponseValue ›), vous obtenez cette erreur car $_COOKIE est un tableau et non une fonction. Vous devez utiliser des crochets au lieu de parenthèses pour accéder aux éléments d’un tableau. Par exemple, $_COOKIE [‹ CaptchaResponseValue ›].PHP Error: Function name must be a string - Stack Overflow

Dans votre cas, je pense que l’erreur vient de la ligne 8288 du fichier functions.lib.php, où il y a un appel à la fonction eval() avec un code qui contient des parenthèses au lieu de crochets. Vous devriez vérifier ce code et le corriger si nécessaire. Vous pouvez aussi consulter le fichier /htdocs/…com/core/lib/functions.lib.php(8288) : eval()‹ d code pour voir le code exact qui provoque l’erreur.Laravel: Function name must be a string - Stack Overflow

Bonjour,
il y a une grosse vague de piratage de dolibarr ces jours ci … et je pense vraiment que vous risquez d’être dans la même galère

Une fonction qui fait appel à un eval() c’est souvent signe d’une injection de code malveillant !

J’ai commencé une page de doc, c’est encore du brouillon mais vous y trouverez quelques pistes de choses à faire en urgence …

https://doc.cap-rel.fr/projet_dolibarr/hacked

Merci de votre réponse!
Cela dit, pour Dolibarr, de l’installation à l’utilisation je n’avais jusque là pas besoin d’intervenir sur le code. Maintenant, je crains plutôt de toucher au code et que cela déclenche d’autres erreurs.
Mais je vais l’essayer en dernier recours.

Merci!
S’il y a une faille dolibarr, c’est assez discret, j’en ai pas entendu parlé.
Cependant je vais essayer de chercher des solutions.
Merci!

Hum … il y en a une béante si vous ne mettez pas le fichier install.lock comme indiqué dans la doc, et ensuite 11.0.1 → il n’y a pas beaucoup de publicité de faite mais par exemple pour la 16 récemment:

sur la « branche » 11 la dernière est la 11.0.5, entre la 11.0.1 que vous semblez avoir et la 11.0.5 il y a eu pas mal de boulot sécurité dont (cherchez le mot vulnerability dans le changelog des versions)

  • FIX : Privilege escalation reported by wizlynx WLX-2020-011
  • FIX: vulnerability reported by wizlynx WLX-2020-012
  • FIX: XSS using the renaming of .noexe files - reported by Nolan.
  • FIX: XSS Vulnerability reported by Mehmet Kelepçe / Gais Cyber Security
  • FIX: Vulnerability in module from modulebuilder.
  • FIX: Vulnerability reported by code16

etc.

Ok merci!
Mais moi j’ai la version 15.0.2

oups pardon dyslexie numérique résultat dans votre message initial il était question de 15.0.1 et j’ai zappé le 5 pour en faire 11.0.1 !

Bonjour,
Commencez par mettre en lieu sûr vos sauvegardes datant de juste avant les problèmes, cela risque de vous servir.

Bonjour,

Vérifiez la version de php sur votre serveur. Votre hébergeur n’aurait-il pas modifié la version de php ?

La dernière version de php 7 qui est 7.4 n’est plus supportée depuis novembre 2022, la version 8.0 arrive en fin de vie en novembre 2023.
Il va devenir compliqué de continuer à utiliser d’anciennes versions de Dolibarr.

Bonjour et merci!
j’ai vérifier et j’utilisais php 7.4, mais même si le mets à php 8.1, j’ai aucun résultat.
Là je pense que je vais devoir intervenir sur le code et si je trouve une solution, je partagerai.
Merci à tous!

Et donc ?
la piste de l’injection SQL / piratage est elle bonne ? en tout cas elle a ma préférence vu le message d’erreur …

Bonne nouvelle les amis!
J’ai pu résoudre le problème en faisant juste une mise à jour:
je suis passer de la version 15.0.2 à la version 16.0.1
Les étapes sont:
1 - Sauvegarder les répertoires Documents et conf.php.
2 - envoyer le contenu de la version dézippé sur le répertoire racine où se trouve nos fichiers et documents dolibarr sur le serveur.
3 - Supprimer le fichier install.lock s’il existe.
4 - Relancer l’installation de son dolibarr avec le même lien et suivre les instructions de la mise à jour.
5 - Remetre le fichier install.lock dans documents.

Voici le lien du tuto : Installation - Mise à jour - Dolibarr ERP CRM Wiki

Finalement j’ai pas voulu aller dans code alors j’ai chercher une autre solution.
Cependant je garde votre réponse au cas où car là je reste en observation pour voir l’évolution.
Un grand merci!

Ok,
si vous avez encore un backup de votre base de données, regardez à tout hasard le contenu de la table llx_menu pour voir si vous n’auriez pas du base64_decode qui traine … signature d’un piratage de type « injection de code sql » …