Has_cap() erreur au moment de la réactivation de plugin (Créer un compte)

  • Statut : non résolu
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Messages
  • #550902
    Trebly
    Membre
    Padawan WordPress
    60 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.2.2

    Problème(s) rencontré(s) :

    Après avoir activé le mode debug, la réactivation de plugins aboutit à l’écran textuel d’erreur suivant

    Notice: has_cap est appelé avec un argument qui est déprécié depuis la version 2.0 ! L’utilisation des niveaux d’utilisateur par les extensions et thèmes est désormais interdite. Utiliser les rôles et capacités à la place. in /home/spacprot/www/wp3-01/wp-includes/functions.php on line 3508
    Voulez-vous vraiment faire cela ?

    qui n’offre pas d’option pour continuer (forcer) ni de moyen de contourner, la seule option est de fermer ou retourner à la page précédente : « gestion des extension » dont il est impossible de sortir. C’est un « deadlock » incontournable.

    La recherche fine des usages de has_cap montre qu’il n’y a pas de cas ou le paramètre n’est pas une chaîne (parfois une variable qui est une chaîne), il n’est jamais numérique ( ce qui serait un usage obsolete).

    Je ne trouve pas de moyen économique de retrouver la source de l’erreur.

    Comment activer les plugins sans avoir ce qui semble une ‘fausse » erreur, ni aller changer le code de WP 4.2.2 ?

    Trebly

    #1009393
    Benzouye
    Participant
    Maître WordPress
    577 contributions

    Bonjour,

    N’est-il pas possible que tu utilises un plugin obsolète qui n’est plus compatible avec 4.2.2 ?
    Désactives tous tes plugins et réactives les un par un pour voir lequel est incriminé …

    #1009394
    Trebly
    Membre
    Padawan WordPress
    60 contributions

    Bonsoir,

    C’est le cas analysé in fine.

    Mais il a fallu que je modifie : public function has_cap( $cap ) dans capabilities.php pour ajouter une fonction de trace et trouver le point exact impossible à localiser autrement.

    Il n’est pas normal que ce message d’alerte (cf. Codex) conduise à un blocage, puisqu’il est impossible d’activer le plugin tant que l’erreur qui est détectée à l’activation n’est pas trouvée.
    Ceci à moins de de désactiver le mode debug, activer le plugin, réactiver le mode debug et attendre d’avoir un message qui ne dit pas et ne permet pas de trouver l’erreur, c’est tordu.

    Comment un message peut-il poser une question « Voulez-vous vraiment faire cela ? » sans qu’aucun bouton ne soit activé pour dire oui ou non, la seule solution est le retour via le navigateur. C’est bizarre, de plus pour un simple message d’alerte.

    Quand a désactiver un par un les plugins (85) on voit que le temps passé ne compte pas.

    Est-ce à l’utilisateur de procéder au déboggage et de construire les outils qui le permettent ?

    Bon, je sais comment faire et j’ai trouvé, mais ce n’est pas le cas général.

    Entre le début d’incident et sa solution c’est une journée de travail, vraiment pas efficace. Avec mon développement il faut dix minutes… pour trouver et corriger. Mais plusieurs heures pour diffuser l’information.

    Cordialement

    Trebly

    #1009395
    Lumiere de Lune
    Participant
    Maître WordPress
    20535 contributions

    Désactivé le mode débug 🙂
    et cherche le responsable, pour l’informer

    #1009396
    Benzouye
    Participant
    Maître WordPress
    577 contributions
    Trebly wrote:
    Quand a désactiver un par un les plugins (85) on voit que le temps passé ne compte pas.

    85 Plugins ! C’est énorme ! Tu as le site internet le plus touffus que j’ai jamais vu :D tu tends le bâton :D
    Dur dur de suivre les mises à jour dans ce contexte, du coup les problèmes de compatibilité doivent être réguliers … Avant de faire une mise à jour de version majeure de WordPress, analyse bien les modifications déclarées, et assures-toi de la compatibilité de tes 85 plugins …

    Trebly wrote:
    Comment un message peut-il poser une question « Voulez-vous vraiment faire cela ? » sans qu’aucun bouton ne soit activé pour dire oui ou non, la seule solution est le retour via le navigateur. C’est bizarre, de plus pour un simple message d’alerte.

    Il y a peut-être un ticket à ouvrir pour une modification du core WordPress … Ou est-ce la traduction qui n’est pas bonne ? A vérifier dans le dictionnaire fr_FR.po …

    #1009397
    Lumiere de Lune
    Participant
    Maître WordPress
    20535 contributions

    Bah 85 plugins ça dépend de ce pourquoi ils sont faits, ce n’est pas obligatoirement énorme

    Et pour les désactiver tous d’un coup il suffit de cocher une case

    Pour info, ceci n’est certainement pas un problème du core de WordPress : ici ce sont les données générées par un plugin qui posent problème lors de leur lecture par une fonction de wordpress. L’erreur est donc détectée par un fichier du core, mais elle vient d’un plugin

    « Voulez vous vraiment faire cela » est lié à des problèmes d’autorisation. As tu réellement cherché toutes les occurences de has_cap dans tes 85 plugins avant d’incriminer le core ?

    #1009398
    Trebly
    Membre
    Padawan WordPress
    60 contributions

    Bonsoir,
    Pour faire très bref :

    1- J’ai ajouté une trace de la pile d’appel dans le traitement d’erreur de WP, ce qui permet de connaitre le lieu exact de l’erreur. Nécessairement un peu volumineux, il pourrait être en option…
    2- J’ai corrigé deux plugins : Il est très utile de se mettre en mode debug (wp ini) pour détecter les erreurs lors de l’installation ou activation.
    – deux has_cap indirects
    3-Désactiver 80 plugins c’est facile, redémarrer le site quand plus rien en fonctionne c’est plus dur. Il faut gérer la liste de plugins avec un tableur et tenir à jour toutes les modifs pour s’en sortir. Bien m’en a pris puisque par dichotomie et contrôles en trois heures j’ai remis en service.
    4- Il n’y a pas de problème du core de WordPress excepté que quand une erreur, même si c’est une simple alerte, il dit il y a quelque chose quelque part qui ne va pas… démerdez-vous. Même si je sais très bien où est l’erreur (on le sait toujours) je ne vous le dirait pas na, j’ai la flemme… Mais c’est « conforme » et bien sur l’erreur d’origine vient probablement d’un plugin non à jour.
    5-« Voulez vous vraiment faire cela » est lié à des problèmes d’autorisation : ça j’ai compris. Mais ce message pose deux problèmes :
    – Il pose une question dont on n’a pas le sens et
    – qui n’a pas de possibilité de réponse…

    En fait en général, la solution est
    – de retourner au « précédent » avec le navigateur,
    – aller sur une deuxième tab de l’administration sur laquelle aucune modification n’a été faite
    – faire une actualisation
    – relancer le demande d’origine

    Explication :
    – lors de la première demande, la connexion est perdue d’où l’erreur, mais elle n’est pas récupérée (mais ça WP ne le saurait pas ?, puisque la cause de ce genre de problème n’est jamais donnée, mais comme je ne suis pas totalement idiot, je fais lui forcer la main)
    – la demande d’actualisation sans modification, elle rétablit la connexion, mais sans le dire.
    – la nouvelle demande est satisfaite, puisque la connexion et droits sont OK… CQFD
    (aller sur une page et relogguer marche aussi)
    solution de fond :
    – voir où le message d’erreur est produit (voir fichiers langue et chercher l’expression d’origine en anglais dans le code)
    – remonter au code erreur,
    – associer un message en clair au code erreur
    – récupérer l’erreur si c’est possible (test de re-connexion)

    Le problème des plugins qui deviennent une part essentielle d’une application de WP, est leurs bugs et leur mise à jour. J’en suis au 7ème fork, mais je n’ai pas le temps de publier.
    Je ne mettrai plus à jour WP sur mon appli en cours, les test c’est une semaine de travail au minimum. Et encore, en cas d’incompatibilité détectée de plugin nécessaire, il peut falloir des mois de travail.
    J’ai pris deux mois au passage 4.2.1 4.2.2.

    Cordialement

    Trebly

    #1606873
    Cherche et trouve
    Participant
    Initié WordPress
    1 contributions

    Bonjour,

    cela fait des jours que je cherche des réponses à ces messages d’erreur. Et même lorsque je poste un message je n’obtiens pas de réponse.

    Est ce qu’ici quelqu’un pourrait m’aider ?

    Merci

     

    WP version 4.6.1–fr_FR,

    Info serveur:         Apache
    Version PHP:         5.6.21

    Version de cURL: 7.21.0, OpenSSL/0.9.8o
    SUHOSIN Installé:     –
    Version MySQL:         5.7.14
    Theme Florida Child Version:         7.3.2

     

     

    …  func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::process_newsletterSub() should not be called statically in <b>/home/bdd/www/wp-includes/plugin.php</b> on line <b>524</b>

    <b>Strict Standards</b>: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::checkAutomaticNewsletter() should not be called statically in <b>/home/bdd/www/wp-includes/plugin.php</b> on line <b>524</b>

    <b>Strict Standards</b>: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::add_pages() should not be called statically in <b>/home/bdd/www/wp-includes/plugin.php</b> on line <b>524</b>

    <b>Notice</b>: has_cap est appelé avec un argument qui est déprécié depuis la version 2.0.0 ! L’utilisation des niveaux d’utilisateur par les extensions et thèmes est désormais interdite. Utiliser les rôles et capacités à la place. in <b>/home/bdd/www/wp-includes/functions.php</b> on line <b>3891</b>

     

    Sur la page des réglages Ajax Newsletter :


    array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::process_newsletterSub() should not be called statically in /home/bdd/www/wp-includes/plugin.php on line 524

    Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::checkAutomaticNewsletter() should not be called statically in /home/bdd/www/wp-includes/plugin.php on line 524

    Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::add_pages() should not be called statically in /home/bdd/www/wp-includes/plugin.php on line 524

    Notice: has_cap est appelé avec un argument qui est déprécié depuis la version 2.0.0 ! L’utilisation des niveaux d’utilisateur par les extensions et thèmes est désormais interdite. Utiliser les rôles et capacités à la place. in /home/bdd/www/wp-includes/functions.php on line 3891

    Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::admin_css() should not be called statically in /home/bdd/www/wp-includes/plugin.php on line 524
    So, take her wrap, fellas

    Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ajaxNewsletter::newsletterConfig() should not be called statically in /home/bdd/www/wp-includes/plugin.php on line 524

    Notice: Undefined index: del in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 10

    Notice: Undefined index: actv in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 11

    Notice: Undefined index: send in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 19

    Notice: Undefined index: count in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 63

    Strict Standards: Non-static method ajaxNewsletter::saveSettings() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 72

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::update_option() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 1135

    Strict Standards: Non-static method ajaxNewsletter::printMessage() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 74

    Strict Standards: Non-static method ajaxNewsletter::printSendDiv() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/backoffice.php on line 104
    Send Newsletter

    Settings updated successfully.

    Strict Standards: Non-static method ajaxNewsletter::getPostsSince() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 687

    Notice: Undefined variable: toString in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 772

    Strict Standards: Non-static method ajaxNewsletter::getMemberCount() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 690

    Strict Standards: Non-static method ajaxNewsletter::getNumberText() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 694

    Strict Standards: Non-static method ajaxNewsletter::getNumberText() should not be called statically in /home/bdd/www/wp-content/plugins/wp-ajax-newsletter/wp-ajax-newsletter.php on line 695

    This will send your newsletter containing 83 posts to 0 subscribers.

    The newsletter was never sent.

    Note:
    The newsletter has no active subscribers.
    Send only the last posts.

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.