wordpress admin无法在迁移到新服务器后发布新帖子

时间:2014-12-11 12:40:47

标签: php mysql wordpress apache .htaccess

阅读了很多内容以解决这个问题,但我被困了......: - (

将WP站点从共享移动到linode VPS。

CONFIGS

WordPress 3.6.1
mysql Ver 14.14 Distrib 5.7.5-m15,适用于Linux(x86_64),使用EditLine包装器
PHP 5.5.18-1 + deb.sury.org~precision + 1(cli)(建于:2014年10月17日15:11:34)
阿帕奇
服务器版本:Apache / 2.4.10(Ubuntu)
服务器内置:2014年7月22日22:57:50
数据库是ut8

虚拟主机配置文件:

DocumentRoot /home/userName/webSite

<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Require all granted
    </Directory>

htaccess的:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

wp_usermeta中的管理员表:

wp_capabilities
a:1:{s:13:"administrator";s:1:"1";}

所以登录没问题 编辑帖子正在工作中 的万阿英,蒋达清:
新帖已经'提交审核'按钮,发布了'发布'!

点击“提交审核”即表示“您没有合适的权限来修改帖子”

我似乎无法找到问题 我尝试修复文件和文件夹权限 添加define('WP_HOME'和define('WP_SITEURL'到wp-config

我甚至不知道从哪里开始......

wp_posts表在ID上有A_I。 wp_posts DUMP显示:

--
-- AUTO_INCREMENT for table `wp_posts`
--
ALTER TABLE `wp_posts`
MODIFY `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7633;

7633是下一个帖子ID。

我该如何解决这个问题? 请查询任何问题,因为我已经完成了网上建议的大部分修复。

ThanX: - )

3 个答案:

答案 0 :(得分:3)

迁移意味着环境变化

您的环境中有什么? Mysql为一个!

鉴于涉及迁移,我敢打赌它与您的数据库有关...您可以检查日志以找出哪些查询失败。对我而言,它是sql_mode,特别是与未被接受的日期时间的0相关。 (发生在新的帖子草稿上)。

继续阅读以解决sql_mode,如果这是你的问题。

检查你的sql_mode

要查看当前sql_mode的内容,可以在mysql中执行此操作(可能是作为root mysql用户):SELECT @@sql_mode;

Wordpress使用0表示“空”日期时间,而某些sql模式设置不允许这样做。我相信那里有插件试图在应用层(在wordpress中)解决这个0的日期问题,但我认为这可能有点hacky ......

我选择切换我的sql_mode并使我的sql模式只有NO_ENGINE_SUBSTITUTION,因为wordpress是唯一使用我的数据库的东西,我对我的项目的sql_mode没问题。您可能需要保留sql_mode设置中的大多数设置,但只需删除no zero in date选项,这就是为什么在重置之前应检查当前sql_mode的原因。

默认情况下sql_modes是什么?

  

MySQL 5.7中的默认SQL模式包括以下模式:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER和NO_ENGINE_SUBSTITUTION。

因此,如果您发现NO_ZERO_IN_DATE, NO_ZERO_DATE,可能需要删除var videoPlayer = document.getElementById('myPlayer'); var user_agent = navigator.userAgent.toLowerCase(); if(user_agent.indexOf('android') > -1) { videoPlayer.requestFullscreen(); } ,并保留其余内容。

我在哪里更改我的sql模式?

  

要在服务器启动时设置SQL模式,请使用--sql-mode =“modes”   命令行上的选项,或选项文件中的sql-mode =“modes”   如my.cnf(Unix操作系统)或my.ini(Windows)。模式是一个   由逗号分隔的不同模式的列表。要清除SQL模式   显式地,使用--sql-mode =“”将其设置为空字符串   命令行,或选项文件中的sql-mode =“”。

我在我的服务器上将 options.cnf my.cnf 设置为mysql程序。

答案 1 :(得分:0)

解决方案

定义新的管理员用户

使用该管理员用户登录

将您之前的管理员降低为撰稿人

将其增加回管理员

使用原始管理员登录

现在可以了。

删除新管理员

现在它已恢复正常。

答案 2 :(得分:0)

我能找到的唯一解决方案就是诀窍,在其他许多不同的解决方案之后安装了WordPress4.0.1的全新副本并修复了所有内容。