我正在使用 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%}') WHERE option_name like '{%OLD_TABLE_PREFIX%}%';
UPDATE `{%TABLE_PREFIX%}options` SET `option_name` = replace(`option_name`, '{%OLD_TABLE_PREFIX%}', '{%NEW_TABLE_PREFIX%}') WHERE option_name like '{%OLD_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_') WHERE option_name like 'wp_test_%';
UPDATE `wp_options` SET `option_name` = replace(`option_name`, 'wp_test_', 'wp_') WHERE option_name like 'wp_test_%';
编辑:正如 @Francisco Corrales 指出的,如果您在访问您创建的管理页面时遇到问题(如果您不编写 PHP,这不是您的情况),您可以查看此链接:Wordpress 开发时出错插件 -“您没有足够的权限访问此页面。”
编辑 2:感谢 @Kasper Souren 建议您可能需要向选项 UPDATE 查询添加 WHERE 子句。如果您不这样做,您可能会无意中更新某些其他选项。我已将 WHERE 子句添加到所有示例查询中。如果您确定不需要它,请随时将其删除,风险自负。
您的问题不在于目录的权限。事实上,您看到“您没有足够的权限访问此页面”消息意味着三件事:
您正在尝试直接访问管理页面,而不是通过wp-admin(因此请指出您要访问哪个管理页面),
您已经登录(否则您将被重定向到/wp-admin)并且
您尝试访问的区域是为更高级别的用户保留的(因此您可能正在使用编辑器帐户连接,而该区域只能由管理员访问)。
您能告诉我们您的本地数据库和在线数据库是否相同?在看到此消息之前您是否可以正常登录?