疑难解答“您没有足够的权限访问此页面”错误

时间:2013-01-21 作者:cpilko

我有一个运行WP 3.5的多站点安装。我的主要网站和网络上的其他一些博客工作得很好。但是,如果我注册了一个新用户和站点,该用户将获得“您没有足够的权限访问此页面”任何时候他们试图访问站点的管理面板时都会出错。现场前端工作正常。

当我在网络管理界面中查看用户时,他们显示为该站点的管理员。如果我将网络管理员添加到站点,我可以查看管理区域。

我已经尝试了禁用和删除所有插件、激活212主题和重新安装WP核心的常规建议。这些都不管用。我怎样才能解决这个问题?

5 个回复
最合适的回答,由SO网友:cpilko 整理而成

周六我花了几个小时寻找这个错误。我在网上找不到描述我最终解决方案的指南。这是我的解决方案。

在WP core中,“您没有足够的权限访问此页面。”在结束时生成错误/wp-admin/includes/menu.php. A.grep 我的插件目录也显示了几个插件也会产生这个错误。

备份menu.php, 并替换if 在第224-227行(从v3.5开始)上阻塞以下内容:

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) );
}
DON\'T Leave this code live on your site unless you are actively debugging! 将此替换为备份menu.php 如果你需要离开一会儿。

再次尝试访问管理端。此错误页面将告诉您一些事情:

如果您在故障页面上获得其他输出,这将告诉您故障是由WP核心生成的。就我而言,的确如此。如果没有获得额外的输出,您知道需要开始查找导致错误的插件Pages No Access 数组设置为1 用户无法访问。在我的情况下,所有页面都设置为1.

  • 英寸User Info, 检查用户是否具有正确的roles and capabilities. 在我的例子中,用户的角色是10 以及他们作为管理员应该具备的能力
  • 英寸Roles 您将看到该站点已定义角色的列表。在我的情况下,我没有定义角色。这就是我的问题[WPDB_PREFIX]_[SITENO]_user_roles 中的条目[WPDB_PREFIX]_[SITENO]_options 桌子我改变了我的WPDB_PREFIX, 但是一些插件创建了一个自定义用户角色,并使用默认值编写了这个角色wp_ 前缀我能够将入口从工作场所复制到非工作场所。只要我这样做了,管理员就可以立即访问该网站。

    我的安装更加复杂,因为我使用new blog templates 插件和我的模板站点的数据库也以同样的方式损坏。

    我希望这有帮助。

  • SO网友:Marc Queralt

    当我从多站点安装迁移时,问题是由于角色是基于表名命名的。因此,当我将选项wp\\u 7\\u user\\u roles命名为wp\\u user\\u roles时,我解决了我的问题。

    SO网友:Gadgetroid

    在经历了包括功能在内的一些解决方案之后,似乎什么都不起作用。最后,我重新检查了live wp\\u usermeta与localhost wp\\u usermeta的大小,发现上载内容被截断,缺少一些值。我清空了表,重新上传了整个usermeta。Wordpress在上传后立即工作。-希望这能节省一些时间。

    SO网友:user2945884

    我对此也有意见。

    我想要的是给一个用户管理员,但从后端管理员侧栏中删除某些菜单。

    我删除了AAM,因为它存在权限问题,并改用了菜单编辑器Pro。一切都很完美。

    当然,这并不是最安全的方式,它仍然允许我手动键入URL访问隐藏的管理页面,但我的客户端无论如何都不知道如何访问这些页面,所以这是可行的。

    SO网友:nesty

    权限问题与下表有关。

    Table [prefix]_usermeta

    包含列的行meta_key 应反映如下前缀。

    [prefix]_capabilities
    [prefix]_user_level
    

    Table [prefix]_options

    包含列的单行option_name 应反映如下前缀。

    [prefix]_user_roles
    

    结束

    相关推荐

    在插件中对MultiSite使用Add_Option而不是Add_Blog_Option有什么错

    我正在开发一个新插件,但这是我第一次保存它,它将把一个选项保存到数据库中。目前我正在使用add_option 我假设,-激活会失败,或者-将错误的值保存到wp_blogID_options表中因为我没有使用add_blog_option. 所有的posts / 我读过的文献(Wrox、Apress等)说我需要习惯add_blog_option. 但我所有的测试(和检查SQL表)都证明我错了。所以在制作插件(可以是单点安装或多站点安装)时,使用add\\u选项而不是add\\u blog\\u选项有什么错