wordpress评论提交后500/404等错误解决办法

之前wordpress换了服务器之后,评论一直500错误,持续了一年多没解决(拖延症晚期),过年的时候就兴起来研究下是什么原因,现在把解决经验和过程写一下。

症状:评论点击提交之后,网页显示空白页(Chrome等),IE显示http 500错误。但实际上评论已经成功提交,在后台能够看到。

解决过程:

一、首先排除是不是主题的问题。

一些主题的评论框用了一些新的技术(bug),可能会导致在提交的时候和你装的环境不兼容。或者你魔改了某个主题文件。所以首先你可以尝试切换一个新的主题试试看有没有问题。

二、是否使用了不同的php版本。

如果之前用了低版本的php,切换了高版本的php,问题就可能出在这里。

三、wordpress的目录是否给了权限。

wordpress的权限设置不当可能会导致很多问题,如果是刚刚迁移wordpress出现错误,可以尝试给予权限:

首先执行

看看是哪个用户在跑进程,然后用chown给予权限(假设在跑进程的用户是www,网站目录是/www/wordpress:)

注意R大写。

四、重定向规则引起的错误

如果你用apache,请检测你的.htaccess是否填写正确(.htaccess可以直接删掉,由wordpress在后台直接点点鼠标生成),如果你是用nginx,请检查你网站的conf配置文件的Rewrite重定向规则是否正确。

五、插件引起的问题

如果不确定,请先停掉所有的wordpress插件,然后在尝试提交评论。如果wordpress插件都停用了之后,wordpress评论能够正常提交,那么就可以逐个启用插件来排除故障了。

六、终极手段,开启调试模式

如果你是用一键包安装的lnmp环境,为了信息安全,默认php调试信息是关闭的,遇到错误只会空白页返回500,我们可以开启php的调试,根据错误代码来寻找原因。

首先找到你的php.ini(linux可以用find /(dirname) -name filename来查找),一般是在

/usr/local/php/etc/php.ini

用vi打开编辑,按下/搜索display_errors,注意把Off,改成On,On的第一个字母注意大写。反之亦然。更改完了之后,重启一下php服务,比如service php-fpm restart,然后再进行访问,就可以输出错误的调试信息,一般会告诉你,是哪一个函数出错了,出错的文件是哪一个,第几行,然后再搜索一下调试信息,一般能够找出具体的原因。问题解决了之后,记得把php调试关闭,以免敏感信息泄露被有心人利用。如果仍然无法解决,可以尝试以下方法查找问题所在:
把wordpress根目录下的wp-config.php中的define(‘WP_DEBUG’, false) 改成true。并添加ini_set(‘display_errors’,’Off’);  问题解决后记得把wp-config.php的内容改回来。

七、解决之后的一些总结

经过排查和调试,我发现是因为我换了php7,一些插件用了php7不支持的函数,导致500错误。具体是一个评论通知邮件插件,在评论的时候会触发,因为调用了不支持的函数(php7移除了很多MySQL扩展),更换php7的函数之后就可以正常使用了。另外有一些插件可能会过度“优化”,比如新版本的七牛云储存插件(改插件不是官方的),有一些优化项,一些主题“优化”了之后往往容易出问题,比如评论之后404错误。总之,发现了问题,最重要的是有调试信息,找到有价值的信息,利用搜索引擎找到你想要的答案。


原文链接:https://03k.org/wordpress-comment-error.html

本站博文无特别声明均为原创,转载请注明原文链接。本站软件均搜集自互联网,供学习研究之用,请下载后24小时内删除。

疑问OR交流点我加QQ群喵喵喵!