20

我正在使用 Wordpress,并在本地完成了我的项目。然后我把它移到我的实时服务器上,没有做任何改变,我只是在配置文件(数据库名称、用户名和密码)中进行了更改。

现在我的网站在前端运行良好,但我无法访问管理面板,因为每次它都会给我错误消息:

您没有足够的权限访问此页面。

谷歌搜索表明大多数错误是由于前缀的变化而发生的,但在我的情况下,它与本地相同。此外,我的目录的权限是 755,文件的权限是 644,但仍然面临同样的问题。

我该如何解决这个问题?

4

2 回答 2

93

您是否更改了数据库表的前缀?我有 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_prefixwp_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%}%';
于 2012-12-11T07:58:37.297 回答
-2

您的问题与目录权限无关。您看到“您没有足够的权限访问此页面”消息这一事实意味着三件事:

  1. 您正在尝试直接访问管理页面,而不是通过 wp-admin(因此请指明您要访问的管理页面),

  2. 您已经登录(否则您将被重定向到 /wp-admin)并且

  3. 您尝试访问的区域是为更高级别的用户保留的(因此您可能正在使用编辑器帐户连接,而该区域仅供管理员访问)。

你能告诉我们你的本地数据库和在线数据库是否相同?您可以在看到此消息之前正确登录吗?

于 2012-12-11T07:51:47.293 回答