web-dev-qa-db-de.com

Fehlerbehebung bei einem Fehler "Sie haben nicht genügend Berechtigungen, um auf diese Seite zuzugreifen"

Ich habe eine Multisite-Installation, auf der WP 3.5 ausgeführt wird. Meine Hauptseite und ein paar andere Blogs im Netzwerk funktionieren einwandfrei. Wenn ich jedoch einen neuen Benutzer und eine neue Site registriere, erhält dieser Benutzer die Meldung "Sie haben nicht genügend Berechtigungen, um auf diese Seite zuzugreifen." Fehler, wenn sie versuchen, den Admin-Bereich der Website zu besuchen. Das Frontend der Site funktioniert ordnungsgemäß.

Wenn ich den Benutzer in der Netzwerkadministrationsoberfläche betrachte, wird angezeigt, dass er ein Administrator dieser Site ist. Wenn ich der Site den Netzwerkadministrator hinzufüge, kann ich den Administrationsbereich anzeigen.

Ich habe versucht, alle Plugins zu deaktivieren und zu entfernen, das Twenty Twelve-Thema zu aktivieren und den WP -Kern neu zu installieren. Keine dieser Arbeiten. Wie kann ich das beheben?

3
cpilko

Ich habe einige Stunden meines Samstags damit verbracht, nach diesem Fehler zu suchen. Ich konnte nirgendwo im Internet eine Anleitung finden, die meine mögliche Lösung beschrieb. Hier ist meine Lösung.

Im WP -Kern "Sie haben nicht genügend Berechtigungen, um auf diese Seite zuzugreifen." Fehler wird am Ende von /wp-admin/includes/menu.php generiert. Eine grep meiner Plugin-Verzeichnisse hat auch gezeigt, dass mehrere Plugins ebenfalls diesen Fehler erzeugen können.

Erstellen Sie eine Sicherungskopie von menu.php und ersetzen Sie den Code im Block if in den Zeilen 224-227 (ab Version 3.5) durch den folgenden Code:

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) );
}

Lassen Sie diesen Code nur dann auf Ihrer Website, wenn Sie aktiv debuggen! Ersetzen Sie dies durch den Sicherungscode menu.php, wenn Sie für eine Weile zurücktreten müssen.

Versuchen Sie erneut, auf die Administratorseite zuzugreifen. Diese Fehlerseite erklärt Ihnen einige Dinge:

  1. Wenn Sie auf Ihrer Fehlerseite eine zusätzliche Ausgabe erhalten, wird Ihnen mitgeteilt, dass der Fehler vom WP Core generiert wird. In meinem Fall war es das. Wenn Sie keine zusätzliche Ausgabe erhalten, müssen Sie nach dem Plugin suchen, das den Fehler verursacht.
  2. Auf keine Seite im Pages No Access-Array, das auf 1 festgelegt ist, kann der Benutzer zugreifen. In meinem Fall wurden alle Seiten auf 1 gesetzt.
  3. Überprüfen Sie in User Info, ob der Benutzer die richtigen Rollen und Funktionen hat. In meinem Fall hatte der Benutzer die Rolle 10 und die Fähigkeiten, die er als Administrator haben sollte.
  4. In Roles sehen Sie eine Liste der definierten Rollen für die Site. In meinem Fall hatte ich keine definierten Rollen. Hier war mein Problem.

In meinem Fall konnte ich meine Datenbank in phpMyAdmin durchsuchen und in der Tabelle [WPDB_PREFIX]_[SITENO]_user_roles nach dem Eintrag [WPDB_PREFIX]_[SITENO]_options suchen. Ich habe meinen WPDB_PREFIX geändert, aber einige Plugins haben eine benutzerdefinierte Benutzerrolle erstellt und diese mit dem Standardpräfix wp_ geschrieben. Ich konnte den Eintrag von einer Arbeitsstelle in die Nichtarbeitsstelle kopieren. Sobald ich das tat, konnte der Administrator sofort auf die Seite zugreifen.

Meine Installation war noch komplizierter, weil ich das neue Blog-Vorlagen Plugin verwendete und die Datenbank meiner Vorlagensite auf dieselbe Weise beschädigt war.

Ich hoffe das hilft.

6
cpilko

Bei der Migration von einer Installation mit mehreren Standorten lag das Problem daran, dass die Namen der Rollen auf Tabellennamen basieren. Also habe ich mein Problem gelöst, als ich die Option wp_7_user_roles in wp_user_roles umbenannt habe.

1
Marc Queralt

Ich hatte auch Probleme damit.

Was ich wollte, war, einem Benutzer Admin zu geben, aber bestimmte Menüs aus der Seitenleiste des Back-End-Administrators zu entfernen.

Ich habe AAM entfernt, weil es Berechtigungsprobleme gab, und stattdessen Menu Editor Pro verwendet. Alles funktioniert einwandfrei.

Natürlich ist dies nicht der sicherste Weg, es erlaubt trotzdem den Zugriff auf die versteckten Admin-Seiten, die ich manuell in die URLs eingetippt habe, aber mein Client würde sowieso nicht wissen, wie er dahin kommt, damit dies funktioniert.

0
user2945884

Nachdem ich ein paar Lösungen einschließlich Fähigkeiten durchgearbeitet hatte, schien nichts mehr zu funktionieren. Schließlich überprüfte ich die Größe von live wp_usermeta gegenüber localhost wp_usermeta und stellte fest, dass der Upload abgehackt wurde und einige Werte fehlen. Ich habe den Tisch geleert und die ganze Usermeta neu hochgeladen. Wordpress funktionierte sofort nach dem Upload. - Hoffe, das spart jemand Zeit.

0
Gadgetroid