我正在使用 Wordpress,并在本地完成了我的项目。然后我把它移到我的实时服务器上,没有做任何改变,我只是在配置文件(数据库名称、用户名和密码)中进行了更改。
现在我的网站在前端运行良好,但我无法访问管理面板,因为每次它都会给我错误消息:
您没有足够的权限访问此页面。
谷歌搜索表明大多数错误是由于前缀的变化而发生的,但在我的情况下,它与本地相同。此外,我的目录的权限是 755,文件的权限是 644,但仍然面临同样的问题。
我该如何解决这个问题?
您是否更改了数据库表的前缀?我有 90% 的把握,这是你的问题。
问题是 WordPress 使用$table_prefix
变量来形成选项和用户元键名,它存储角色和功能信息。因此,一旦您更改了前缀,但不更新您的数据库,您就会收到此错误。以下是如何修复它 - 通过 phpMyAdmin 执行此 SQL 命令,或与您的数据库交互的不同界面(您也可以使用 PHP 执行此操作):
UPDATE `{%TABLE_PREFIX%}usermeta` SET `meta_key` = replace(`meta_key`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}');
UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}');
在哪里:
{%TABLE_PREFIX%}
是您当前的$table_prefix
(在 中设置wp-config.php
){%OLD_TABLE_PREFIX%}
是你以前的$table_prefix
{%NEW_TABLE_PREFIX%}
是您的新(当前)$table_prefix
- 它很可能与您的{%TABLE_PREFIX%}
.因此,如果您的旧版本$table_prefix
是wp_test_
,而新版本是wp_
,您将执行以下查询:
UPDATE `wp_usermeta` SET `meta_key` = replace(`meta_key`, 'wp_test_', 'wp_');
UPDATE `wp_options` SET `option_name` = replace(`option_name`, 'wp_test_', 'wp_');
编辑:正如@Francisco Corrales 所指出的,如果您在访问您创建的管理页面时遇到问题(如果您不编写 PHP,这不是您的情况),您可以查看此链接:开发插件时出现 Wordpress 错误- “您没有足够的权限访问此页面。”
编辑 2:正如@Kasper Souren 所指出的,您可能希望将 WHERE 子句添加到选项 UPDATE 查询中。像这样(不要删除%
最后一个%}
):
UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}') WHERE option_name like '{%OLD_TABLE_PREFIX%}%';
您的问题与目录权限无关。您看到“您没有足够的权限访问此页面”消息这一事实意味着三件事:
您正在尝试直接访问管理页面,而不是通过 wp-admin(因此请指明您要访问的管理页面),
您已经登录(否则您将被重定向到 /wp-admin)并且
您尝试访问的区域是为更高级别的用户保留的(因此您可能正在使用编辑器帐户连接,而该区域仅供管理员访问)。
你能告诉我们你的本地数据库和在线数据库是否相同?您可以在看到此消息之前正确登录吗?