繁体   English   中英

Wordpress 仪表板:将实时网站移动到本地主机后,“抱歉,您不允许访问此页面”

[英]Wordpress dashboard : "Sorry you are not allowed to access this page" after moving live website to localhost

我尝试手动备份我的 Wordpress 网站。

  1. 我备份了我的 htdocs 文件夹。
  2. 我导出了我的数据库的 a.sql 文件备份,其中以“mas”为前缀。 (后面没有下划线)
  3. 我在我的所有数据库(使用 PowerShell)中为新的 URL 更新了旧的 URL。
  4. 我更新了 wp-config.php 文件。
  5. 我在本地主机服务器上创建了一个同名的新数据库。
  6. 我在 PhpMyAdmin 上导入了 .sql 文件。

在那之后,我意识到我无法以管理员身份访问仪表板。

我收到以下信息:Désolé, vous n'avez pas l'autorisation d'accéder à cette page。

法语相当于:对不起,您无权访问此页面。

所以我停用了我所有的插件。 我将 .htaccess 文件更改为 .htaccess.old。

在我的数据库中,我的表 usermeta 是为我的用户帐户配置的。 出于某种原因,我有两次“prefix_capabilites”和“prefix_user_level”:

元密钥 元值
可粉化剂 a:1:{s:13:"管理员";b:1;}
masuser_level 10
wp_capabilities a:1:{s:13:"管理员";b:1;}
wp_user_level 10

然后,我尝试使用 PHPStorm 调试我的网站。

这是我发现的:

// plugin.php

function user_can_access_admin_page() {
    global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv,
        $plugin_page, $_registered_pages;

    $parent = get_admin_page_parent();

// I omitted some functions here...

if ( empty( $parent ) ) { // $parent is empty ""
        if ( isset( $_wp_menu_nopriv[ $pagenow ] ) ) { // $pagenow is "index.php"
            return false; // It returns here.
        }

然后,它返回这里:

// menu.php

if ( ! user_can_access_admin_page() ) {

    /**
     * Fires when access to an admin page is denied.
     *
     * @since 2.5.0
     */
    do_action( 'admin_page_access_denied' );

    wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 ); // And displays this.
}

因此,据我了解,我的页面 index.php 对于表 $_wp_menu_nopriv[] 被认为是 TRUE。

它在某种程度上证实了用户无法访问管理页面。

但我不明白这个变量 $_wp_menu_nopriv[] 是什么意思?

你能帮助我吗?

更新 1:

我试图将我的用户 wp_capabilites 值更改为:'a:1:{s:13:"administrator";s:1:"1";}'

但它也没有奏效。

当我尝试使用备份插件备份我的网站时,总会在某些时候出现错误。

更新 2:

我从这个网站找到了我的问题的解决方案。

当您(在某些时候)使用也更改了数据库中的功能记录的实用程序更改了数据库前缀时,就会发生这种情况。

要修复它,请记下您当前的数据库前缀。 默认值为“wp_”,为简单起见,我们假设目标前缀为“wp_”。 如果您希望使用的数据库前缀不同,请确保将所有“wp_”实例替换为您的新前缀。

在 Plesk 中为数据库使用 phpMyAdmin 并完成这些搜索(使用 LIKE %...%):

在 wp_options 表中,查找以“user_roles”结尾的 option_name 并将其前缀更改为“wp_user_roles” 在 wp_usermeta 表中,查找以错误前缀开头的所有条目并将不正确的前缀替换为 wp_ 现在登录或刷新页面,您应该会发现您的用户权限已返回。

您可以尝试更改 wp_capalities

update wp_usermeta
set meta_value = 'a:1:{s:13:"administrator";s:1:"1";}'
where user_id = YOUR USER ID
and meta_key = 'wp_capabilities';

否则,您可以考虑使用插件安装和迁移全新的 wordpress: https://wordpress.org/plugins/all-in-one-wp-migration/

我从另一个网站找到了我的问题的解决方案:

当您(在某些时候)使用也更改了数据库中的功能记录的实用程序更改了数据库前缀时,就会发生这种情况。

要修复它,请记下您当前的数据库前缀。 默认值为“wp_”,为简单起见,我们假设目标前缀为“wp_”。 如果您希望使用的数据库前缀不同,请确保将所有“wp_”实例替换为您的新前缀。

在 Plesk 中为数据库使用 phpMyAdmin 并完成这些搜索(使用 LIKE %...%):

在 wp_options 表中,查找以“user_roles”结尾的 option_name 并将其前缀更改为“wp_user_roles” 在 wp_usermeta 表中,查找以错误前缀开头的所有条目并将不正确的前缀替换为 wp_ 现在登录或刷新页面,您应该会发现您的用户权限已返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM