升级后:$USER在成功登录后变为未知(ID:0)?

时间:2017-03-29 作者:夏期劇場

我只是disabled all plugins, 然后将我的WP升级为4.7.3. 然后我要做的第一件事是以管理员身份登录到面板。

然后我得到:

抱歉,不允许您访问此页面

(注意:我的Wordpress使用默认前缀wp_, 所以这不应该是前缀问题。)

然后我做了一些手动调试。以下是步骤:

(1) 内部wp-includes/user.php, 线后104, 放print_r( $user ); exit; 在最后一行之前function wp_signon( ). 并返回正确的有效用户对象:

104:      do_action( \'wp_login\', $user->user_login, $user );
105:      print_r( $user ); exit;
106:      return $user;
107:  }
WP\\u User Object([数据]=>;stdClass Object([ID]=>;1[用户登录]=>;管理员[用户通行证]=>;$Q$BipvC2ydjzFlGFKbY.jkjhhpqbeu7ue。[用户名称]=>;管理员[用户电子邮件]=>;admin@example.com[用户url]=>;[用户注册]=>;2013-08-05 06:46:16[用户激活键]=>;[用户状态]=>;1[显示名称]=>;管理员)[ID]=>;1[大写]=>;数组([管理员]=>;1)[cap\\U键]=>;wp\\U功能[角色]=>;数组([0]=>;管理员)[所有CAPs]=>;数组([切换\\u主题]=>;1[编辑\\u主题]=>;1[激活\\u插件]=>;1[编辑\\u插件]=>;1[编辑\\u用户]=>;1[编辑\\u文件]=>;1[管理\\u选项]=>;1[缓和\\u评论]=。。。。。。。。。。。。。。。。。

()That means, at this point, Wordpress can properly authenticate the user and retrieve it\'s Object. So nothing is wrong with authentication part! )

(2) 然后,在里面wp-admin/admin.php, 线后31, 将echo get_current_user_id();

31:      require_once(dirname(dirname(__FILE__)) . \'/wp-load.php\');
32:      echo get_current_user_id();
然后,它来了!

0

抱歉,不允许您访问此页面。

这意味着,此时,刚刚登录的管理员用户已经离开了。Wordpress has lost the User, 因此不记得用户。

有人能帮我理解为什么会这样吗?

如果您想知道,以下是我的数据库值wp_usermeta 表(用于user_id=1):

wp\\U能力=a:1:{s:13:administrator:1:1}

wp\\U user\\U级别=10

1 个回复
SO网友:iyrin

不建议编辑核心文件。您可以尝试下载WordPress文件的干净安装。如果可以,将当前主题设置为Twenty17,这样数据库就可以进行干净的安装了。

如果尚未备份数据库,请确保备份数据库。

按照codex说明delete the old WordPress files. 他们有一个很好的列表,列出了您要为干净安装保留的所有文件。虽然,我建议将目录名更改为wordpress-backup 然后用原始目录名安装新文件wordpress 或者不管它现在叫什么。

然后可以开始复制基本文件。再次尝试运行站点之前,请确保执行此操作。尤其是如果你不能先切换到2017年的主题。您需要确保找到当前使用的主题。以下是要复制到干净安装的文件:

wp配置。php文件;

可湿性粉剂内容文件夹;

如果您使用的是语言文件,而不是在wp内容/语言中,请不要删除此文件夹(您可能希望将语言文件移动到wp内容/语言中,以便于将来升级);

  • 。htaccess文件——如果您已将自定义规则添加到。htaccess,不要删除它。

    自定义内容(主题)和/或插件——如果您在wp Content文件夹中有任何图像或其他自定义内容或插件,请不要删除它们。

  • 现在测试该站点,如果之前无法做到这一点,请尝试将主题更改为2017主题。最好先测试默认值,以排除不兼容的主题或插件,就像之前所做的那样。