随时听人讲有500错误。
今天在楚云blog上重现了。
抓住机会debug。
结果很快出来:
当你第二次用同样的标题并且标题中含有多字节文字时,有很大机会触发wp一个死循环,然后服务器cpu直接到100%,当运行时间超过max_execution_time时候出现500错误。
死循环在这里:wp-include/post.php
[code lang=”php”]
get_var($wpdb->prepare(“SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1”, $post_name, $post_type, $post_ID, $post_parent));
if ($post_name_check || in_array($post_name, $wp_rewrite->feeds) ) {
$suffix = 2;
do {
$alt_post_name = substr($post_name, 0, 200-(strlen($suffix)+1)). “-$suffix”;
// expected_slashed ($alt_post_name, $post_name, $post_type)
$post_name_check = $wpdb->get_var($wpdb->prepare(“SELECT post_name FROM $wpdb->posts WHERE post_name = ‘$alt_post_name’ AND post_type = ‘$post_type’ AND ID != %d AND post_parent = %d LIMIT 1″, $post_ID, $post_parent));
$suffix++;
} while ($post_name_check);
$post_name = $alt_post_name;
}
}
[/code]
死循环触发点:wp-include/wp-db.php
[code lang=”php”]
db.tgz 解压后得到 db.php 将它放到 wp-content/ 下。
———
或许这只是其中一个造成500的原因,下次遇到再说吧。
——— update ——–
补充,此db.php为2.5.1的,后来才知道2.5.1比2.5.0也有更新,不保证其他版本没有意外情况。
——— update 2008/05/10 ——–
发现bug,更新了方法以及db.php下载链接。以前的方法太粗暴,一些其他的查询也被强制转码造成数据错误。
解决方法:重新下载db.php或按照前文代码重新修改wp-db.php。已经出错的数据,可重新编辑保存。已知会引发错误的地方:http://yourwpuri/wp-admin/widgets.php (也就是说你使用了之前的 db 文件后,有设置过 widgets 功能,最好重新设置一遍)
Pingback引用通告: Wordpress2.5 Error 500解决方法
Pingback引用通告: 《槽边往事》---比特海日志 » Blog Archive » Wordpress2.5 Error 500解决方法
一定要使用一模一样的多字节标题(比如中文),才会触发这个问题。
所以每次保存草稿后发布就容易挂。
可怜我的 blog 上很多同样标题的文章……
Pingback引用通告: 白板报 » 500错误解决了
我的仅仅是在提交空的comment时会出现500 error。还在寻求解决方案
很好很强大:)
Pingback引用通告: wp post 时500错误重要更新 : 我的备忘录
我遇到一些触发500 error的条件更加“丰富多彩”:更换外观、激活插件都可能造成500 error错误;请问如何显示debug信息?
手动设断点调试,不过前题是能完整重现bug。
我前天更新了一遍文章的tag后也遇到同样的500报错,一步步echo的查代码对数据,最后发现表wp_options中的category_children这一行被删掉了.我只找出这一点变化,前后数据都一样.
后来十再不高兴查了,重新当了个wp重装再还原以前的数据备份,ok了-_-
用了這解决方法後卻產生另一問題:permalink的設定不可更改,會出現:WordPress database error: [Query is empty] … wp-admin/options-permalink.php
还是没有说清楚
谢谢,我把这个茬给忘了。
现在换回2.5,问题也解决了。
А вот по моему мнению, эта тема слишком сложная для новичка :)
widgets.php 已终止操作
路过,支持一下,O(∩_∩)O~ 站点很漂亮。
话说我的博客发表完文章就出现http://blog.rengang.org/post.php 500错误页面
刷新下后台又出来了
郁闷中
2.92