web-dev-qa-db-fra.com

Vous ne disposez pas des autorisations suffisantes pour accéder à cette page sans aucune modification

Je travaille sur Wordpress et j'ai terminé mon projet localement. Je l'ai ensuite déplacé sur mon serveur live et je n'ai rien changé, je viens de faire des changements dans le fichier de configuration (nom de la base de données, nom d'utilisateur et mot de passe) ).

Maintenant, mon site fonctionne bien sur le front-end mais je ne peux pas accéder au panneau d'administration car chaque fois qu'il me donne le message d'erreur:

Vous ne disposez pas des autorisations suffisantes pour accéder à cette page.

Les recherches Google indiquent que la plupart des erreurs sont survenues en raison d'un changement de préfixe, mais dans mon cas, c'est la même que sur local. En outre, les autorisations de mes répertoires sont 755 et celles des fichiers sont 644, mais je suis toujours confronté au même problème.

Comment pourrais-je résoudre ce problème?

20
Kashif Waheed

Avez-vous changé le préfixe de vos tables de base de données? Je suis sûr à 90% que c'est votre problème.

Le fait est que WordPress utilise le $table_prefix variable pour former les noms des options et des clés utilisateur, où elle stocke les informations sur les rôles et les capacités. Donc, une fois que vous modifiez le préfixe, mais ne mettez pas à jour votre base de données, vous obtenez cette erreur. Voici comment y remédier - exécutez cette commande SQL via phpMyAdmin, ou une interface différente pour interagir avec votre base de données (vous pouvez le faire avec PHP également):

UPDATE `{%TABLE_PREFIX%}usermeta` SET `meta_key` = replace(`meta_key`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}');
UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}');

Où:

  • {%TABLE_PREFIX%} est votre actuel $table_prefix (comme défini dans wp-config.php)
  • {%OLD_TABLE_PREFIX%} est votre précédent $table_prefix
  • {%NEW_TABLE_PREFIX%} est votre nouveau (actuel) $table_prefix - ce sera très probablement le même que votre {%TABLE_PREFIX%}.

Donc, si votre ancien $table_prefix était wp_test_ et votre nouveau est wp_, vous feriez cette requête:

UPDATE `wp_usermeta` SET `meta_key` = replace(`meta_key`, 'wp_test_', 'wp_');
UPDATE `wp_options` SET `option_name` = replace(`option_name`, 'wp_test_', 'wp_');

EDIT: Comme l'a noté @Francisco Corrales, si vous rencontrez des problèmes pour accéder à une page d'administration que vous avez créée (si vous n'écrivez pas PHP, ce n'est pas votre cas), vous pouvez consulter ce lien: Erreur Wordpress en développer un plugin - "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page."


EDIT 2: Comme l'a noté @Kasper Souren, vous souhaiterez peut-être ajouter une clause WHERE à la requête UPDATE des options. Comme ça (ne supprimez pas le % après le dernier %}):

UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}') WHERE option_name like '{%OLD_TABLE_PREFIX%}%';
88