您没有足够的权限访问此页面而没有任何更改

Kas*_*eed 20 ftp wordpress admin

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

现在我的网站在前端工作正常,但每次它给我错误信息时我都无法访问管理面板:

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

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

我该怎么办呢?

Nik*_*lov 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%}');
Run Code Online (Sandbox Code Playgroud)

哪里:

  • {%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_');
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Francisco Corrales指出的,如果您在访问您创建的管理页面时遇到麻烦(如果您不编写PHP,这不是您的情况),您可以查看此链接:开发插件时出现Wordpress错误 - "您没有足够的权限来访问此页面."


编辑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%}%';
Run Code Online (Sandbox Code Playgroud)

  • 请修复您的第一个更新查询,而不是添加 EDIT2...如果人们在没有阅读所有答案的情况下执行第一个查询,他们可能已经遇到麻烦了。 (2认同)