class-wp-roles.php 中的错误 - 'array_keys() 期望参数 1 为数组”
P粉253518620
2023-08-30 13:11:16
<p>几天前,我注意到我无法再访问 WordPress 中的管理仪表板。我会使用正常的管理员用户名/密码登录,但随后我会被重定向到网站主页而不是 WordPress 仪表板。并且页面顶部的管理栏没有显示转到仪表板或编辑页面等的常用选项。之后当我尝试转到 wp-admin 时,我收到一条错误消息“抱歉,您不允许访问此页面。”</p>
<p>当我启用 wp_debug 时,我开始看到以下错误消息:</p>
<blockquote>
<p>警告:array_keys() 期望参数 1 为数组,在 /var/www/wp-includes/class-wp-roles.php 第 291 行给出的字符串</p>
<p>警告:在第 291 行 /var/www/wp-includes/class-wp-roles.php 中为 foreach() 提供的参数无效</p>
<p>警告:array_keys() 期望参数 1 为数组,在 /var/www/wp-includes/class-wp-roles.php 第 291 行给出的字符串</p>
<p>警告:在第 291 行 /var/www/wp-includes/class-wp-roles.php 中为 foreach() 提供的参数无效</p>
</blockquote>
<p>即使我禁用了所有插件,也会显示此错误,并且无论当前激活哪个主题,它都会显示。我在搜索中找不到太多有关此错误的信息,并且有关 class-wp-roles 的几个线程特定于我不使用的某些插件。</p>
<p>我做了正常的首次检查,比如关闭所有插件、检查 wp-config.php、检查文件权限、检查 phpmyadmin 中的帐户角色/权限,甚至使用 phpmyadmin 创建了一个新的管理员用户。我还在“安全模式”下加载了该网站,该模式禁用所有插件并默认为 WordPress 中的“二十二十”主题。仍然无法访问 WordPress 仪表板。 wp-admin.php。</p>
<p>一些附加信息,我的网站使用 Storefront 主题和 WooCommerce,但由于即使这两个主题均未激活,也会显示此错误,所以这应该不重要,对吧?我的网站托管在 GoDaddy 上,当我第一次遇到此错误时,该网站使用的是 WordPress 6.0.3,但昨天它自动升级到 6.1.1,但我仍然遇到同样的问题。 (我真的希望升级能够解决这个问题。)该网站的其他一切似乎都工作正常。我只是无法访问管理仪表板!非常感谢任何对此的帮助。</p>
哇,太快了。我今天创建了一个 Stack Overflow 帐户,就是为了发布这个问题,经过几天的头撞桌子试图弄清楚这个问题,我在几个小时内得到了解决方案。
对于遇到类似问题的人,一定要先进行定期检查以排除这些问题,然后转到您网站的 phpmyadmin,然后转到 wp_options > 表。查找 wp_user_roles 条目。确保它有这样的内容:
我的 wp_user_roles 实际上只是将其设置为值:
事实证明这是错误的值!我不知道这是怎么发生的。在这个问题之前,我根本没有在 phpmyadmin 中乱搞。应该是插件什么的。当我用正确的角色和功能列表替换该 AOK 时,我立即能够再次访问 WordPress 管理仪表板。
如果您使用的是 WooCommerce,则需要执行一个额外步骤:您需要停用并重新激活 WooCommerce 插件。这是因为上面的角色列表缺少一个特定于 WooCommerce 的角色,称为“商店经理”,您可以通过该角色访问 WooCommerce 的产品、订单、分析、优惠券等页面。
就是这样!非常感谢 @VijayHardaha 帮助解决这个问题!我希望有一天这个帖子可以帮助其他人。