WordPress在本地开发计算机上缺少用户角色。实时站点工作正常

时间:2012-02-16 作者:marvinhagemeister

我有一个实时WordPress安装和一个本地安装,用于开发目的。我刚刚导出了live数据库,用本地URL替换了所有出现的live siteurl,并将其导入到我的开发机器上。

问题是,在我的开发机器上,所有用户都失去了任何权限。登录时,我得到:

Notice: Undefined offset: 2 in /var/www/mysite/wp-admin/includes/plugin.php on line 1390 
在一个页面模板上,我用

global $current_user;
var_dump( get_currentuserinfo() );
这将在我的开发计算机上返回NULL,并在实时安装上返回正确的用户信息。我仔细检查了表前缀、权限,尝试了干净的WordPress安装等,但没有成功。令人困惑的是,我可以通过自定义sql查询很好地查询userinfo。

编辑:进一步检查后,我发现全局$wp\\u角色不包含任何用户角色和功能。WordPress无法从数据库中检索此内容。。。

编辑2:很抱歉进行了编辑。但我发现了问题所在。在wp\\u options表中有一行“wp\\u user\\u roles”。值,一个未序列化的字符串确实以某种方式包含空格,这会导致在尝试取消序列化字符串时出错。我用实时站点的值替换了数据库值,现在一切都正常了。

2 个回复
最合适的回答,由SO网友:markratledge 整理而成

我刚刚导出了live数据库,用本地URL替换了所有出现的live siteurl,并将其导入到我的开发机器上。

使用文本编辑器查找/替换会中断序列化数据;您必须在phpmyadmin中使用MySQL查询更改值:

UPDATE wp_options SET option_value = replace(option_value, \'http://www.olddomain.com/\', \'http://www.newdomain.com/\') WHERE option_name = \'home\' OR option_name = \'siteurl\';

UPDATE wp_posts SET guid = replace(guid, \'http://www.olddomain.com/blog/\',\'http://www.newdomain.com/\');

UPDATE wp_posts SET post_content = replace(post_content, \'http://www.olddomain.com/blog/\', \'http://www.newdomain.com/\');

UPDATE wp_postmeta SET meta_value = replace(meta_value, \'http://www.olddomain.com/blog/\', \'http://www.newdomain.com/\');

SO网友:Ewout

以防其他人有此问题:

我有两个带有自定义表前缀的站点。此前缀也用于某些rows 在选项表中。将选项表从一个站点移动到另一个站点时,我重命名了选项表本身,但不知道我也必须重命名一些选项名称,特别是wp_user_roles 选项实际上是prefix_user_roles. 在我的wp_options (prefix_options) 具有该前缀的表。

Wordpress自动创建prefix_user_roles 选项时,它无法识别otherprefix_user_roles 把我拒之门外的选项。

结束

相关推荐

Recommended File Permissions

嘿,伙计们,我花了很长时间试图解决这个问题。我想知道WordPress中的文件权限应该是什么样子in order to use the autoupdate feature. 到目前为止,我的wordpress安装程序一直在询问我的FTP信息,我不想使用那种升级/安装方法,我想使用纯/直接PHP。某些上下文:Web服务器和php fcgi守护程序运行为www-data:www-data</wordpress安装位于/home/blaenk/sites/domain.tld/</首先,我read