我正在使用Wordpress,我在本地完成了我的项目。然后我将它移动到我的实时服务器并且没有改变任何东西,我只是在配置文件中进行了更改(数据库名称,用户名和密码)。
现在我的网站在前端工作正常,但每次它给我错误信息时都无法访问管理面板:
您没有足够的权限来访问此页面。
Google搜索表明大多数错误是由于前缀更改而发生的,但在我的情况下与本地相同。此外,我的目录的权限是755,文件的权限是644但仍然面临同样的问题。
我该如何解决此问题?
答案 0 :(得分:88)
您是否更改了数据库表的前缀?我90%肯定,这是你的问题。
问题在于WordPress使用$table_prefix
变量来形成选项和usermeta键名称,它存储角色和功能信息。因此,一旦更改了前缀,但没有更新数据库,就会出现此错误。以下是如何修复它 - 通过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_');
,则可以执行以下查询:
%
编辑2:正如@Kasper Souren所指出的,您可能希望在选项UPDATE查询中添加WHERE子句。像这样(不要删除最后%}
之后的UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}') WHERE option_name like '{%OLD_TABLE_PREFIX%}%';
):
{{1}}
答案 1 :(得分:-2)
您的问题不在目录的许可上。您看到“您没有足够的权限访问此页面”消息这一事实意味着三件事:
您正试图直接访问管理页面但不是通过wp-admin访问(因此请指明您尝试访问的管理页面),
您已登录(否则您将被重定向到/ wp-admin)和
您尝试访问的区域是为更高级别的用户保留的(因此您可能使用编辑器帐户进行连接,而该区域仅供管理员访问)。
您能否告诉我们您的本地数据库和在线数据库是否相同?在看到此消息之前,您能正确登录吗?