web-dev-qa-db-fra.com

Dépannage d'une erreur "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page"

J'ai une installation multisite sous WP 3.5. Mon site principal et quelques autres blogs sur le réseau fonctionnent bien. Cependant, si j'inscris un nouvel utilisateur et un nouveau site, cet utilisateur obtient le message "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page". erreur à tout moment, ils essaient de visiter le panneau d'administration du site. La partie avant du site fonctionne correctement.

Lorsque je regarde l'utilisateur dans l'interface d'administration de réseau, il est démontré qu'il est l'administrateur de ce site. Si j'ajoute l'administrateur réseau au site, je peux afficher la zone d'administration.

J'ai essayé les suggestions habituelles de désactiver et de supprimer tous les plug-ins, d'activer le thème Twenty Twelve et de réinstaller le noyau WP. Aucun de ces travaux. Comment puis-je réparer cela?

3
cpilko

J'ai passé plusieurs heures de mon samedi à chercher cette erreur. Je n'ai pu trouver sur Internet aucun guide décrivant ma solution éventuelle. Voici ma solution.

Dans le noyau WP, l'option "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page". une erreur est générée à la fin de /wp-admin/includes/menu.php. Une grep de mes répertoires de plugins a également montré que plusieurs plugins pouvaient également générer cette erreur.

Faites une sauvegarde de menu.php et remplacez le code à l'intérieur du bloc if aux lignes 224-227 (à partir de la v3.5) par ce qui suit:

if ( !user_can_access_admin_page() ) {
   $a = array(
       'Pages No Access' => $_wp_menu_nopriv,
       'User Info' => $current_user,
       'Roles' => $wp_roles->get_names(),
   );
   $s = sprintf("\n<br /><pre>%s</pre>", print_r($a, true));
   do_action('admin_page_access_denied');
   wp_die( __('You do not have sufficient permissions to access this page.'.$s) );
}

NE PAS laisser ce code en direct sur votre site, sauf si vous êtes en train de déboguer! Remplacez-le par la sauvegarde menu.php si vous devez vous éloigner un moment.

Essayez d'accéder à nouveau à l'administrateur. Cette page d'erreur vous dira quelques choses:

  1. Si vous obtenez une sortie supplémentaire sur votre page d'échec, cela vous indique que l'échec est généré par le noyau WP. Dans mon cas c'était. Si vous n'obtenez pas de sortie supplémentaire, vous savez que vous devez commencer à rechercher le plug-in à l'origine de l'erreur.
  2. Toute page du tableau Pages No Access définie sur 1 n'est pas accessible à l'utilisateur. Dans mon cas, toutes les pages ont été définies sur 1.
  3. Dans User Info, vérifiez si l'utilisateur dispose du bon rôles et fonctionnalités . Dans mon cas, l'utilisateur avait le rôle de 10 et les fonctionnalités qu'il devrait avoir en tant qu'administrateur.
  4. Dans Roles, vous verrez une liste de rôles définis pour le site. Dans mon cas, je n'avais pas de rôles définis. Voici mon problème.

Dans mon cas, j'ai pu parcourir ma base de données dans phpMyAdmin et rechercher l'entrée [WPDB_PREFIX]_[SITENO]_user_roles dans la table [WPDB_PREFIX]_[SITENO]_options. J'avais changé mon WPDB_PREFIX, mais un plugin avait créé un rôle d'utilisateur personnalisé et l'avait écrit avec le préfixe par défaut wp_. J'ai pu copier l'entrée d'un site de travail sur le site qui ne fonctionnait pas. Dès que je l'ai fait, l'administrateur a immédiatement pu accéder au site.

Mon installation était encore plus compliquée parce que j'utilisais le plugin nouveaux modèles de blog , et que la base de données de mon site de modèles était également corrompue de la même manière.

J'espère que ça aide.

6
cpilko

Alors que je migrais depuis une installation multisite, le problème était dû au fait que les rôles sont nommés en fonction des noms de table. J'ai donc résolu mon problème lorsque j'ai nommé l'option wp_7_user_roles à wp_user_roles.

1
Marc Queralt

J'ai eu des problèmes avec cela aussi.

Ce que je voulais, c’était de donner à un utilisateur Admin mais de supprimer certains menus de la barre latérale de l’administrateur principal.

J'ai supprimé AAM parce qu'il posait des problèmes d'autorisation et j'ai utilisé Menu Editor Pro à la place. Tout fonctionne parfaitement.

Bien sûr, ce n’est pas le moyen le plus sûr d’agir à ce sujet, il permet toujours d’accéder aux pages d’administrateur masquées en tapant manuellement dans les URL, mais mon client ne sait pas comment s'y rendre de toute façon, cela fonctionne donc.

0
user2945884

Après avoir passé en revue quelques solutions, y compris des capacités, rien ne semblait fonctionner. J'ai finalement revérifié la taille de wp_usermeta en direct par rapport à localhost wp_usermeta et j'ai constaté que le téléchargement avait été coupé et qu'il manquait certaines valeurs. Je vidai la table et chargeai de nouveau l’usermeta entière. Wordpress a fonctionné immédiatement après le téléchargement. - J'espère que ça fait gagner du temps à quelqu'un.

0
Gadgetroid