我最近在WordPress上安装了一个主题,当它被激活时,它只会导致一个空白的白色屏幕。造成这种情况的可能原因是什么?以及开始发现问题的步骤。
将网站从我们的测试服务器移动到托管公司的服务器时,问题就出现了,我们已经习惯了托管各种其他WordPress网站。在我的实例中,白屏的可能原因是什么?以及开始发现问题的步骤。我已经采取了一些研究步骤,例如增加内存限制和禁用插件等,但它们在原始服务器上工作正常,所以我怀疑它可能是由插件等引起的。
谢谢
更新
是的,到目前为止,我已将内存限制增加到128M,并禁用所有插件以及临时命名其文件夹。
由于@Sabari的建议,我已启用调试,这导致以下错误:致命错误:在 / home / neatly /中调用未定义的函数mb_internal_encoding() public_html / wp-content / themes / best_wedding_dress-babe23c7e828662f1a07c296a5608f52 / functions.php 在线 12
我对PHP的用处不大,但您可以就如何继续进行一些非常好的建议,例如在何处以及如何定义mb_internal_encoding。这是第12行的代码:
mb_internal_encoding(get_bloginfo('charset'));
我想重申,这在我们的测试服务器上完美运行,所有这些问题只有在移动到新服务器时才会出现。我已经多次将WordPress站点从一台服务器转移到另一台服务器,并在此特定网站上重新下载并上载了三次内容和数据库。两个版本(测试服务器和新服务器)都具有相同版本的WordPress,因此新服务器可能具有不同的技术。这些行中是否有任何可能导致此错误的内容?
Sabari建议的答案
通过在我们的webhost服务器上启用和配置mbstring(多字节支持)解决了这个问题。
答案 0 :(得分:2)
WSOD. OK... possible cause, theme exhausts the memory limit
a) clear you cache
b) Make a backup before changing anything
c) Disable the plugins,
d) Replace Theme with a Default Theme
e) Re-install Wordpress
使用调试进行故障排除
error_reporting(E_ALL); ini_set('display_errors', 1);
在Wordpress中:
define( 'WP_DEBUG', true);
答案 1 :(得分:2)
我认为您的问题与未启用mbstring
扩展有关。
mb_internal_encoding
功能需要mbstring
扩展名。它是non-default
扩展名,默认情况下未启用。
有关如何安装和配置mb_string
http://www.php.net/mbstring的更多信息,您可以看到此内容。
如果您在Windows上,则在php.ini中取消注释该行(在extension = php_mbstring.dll之前删除分号)extension=php_mbstring.dll;
。
如果您使用的是linux,则可以尝试使用yum install php-mbstring
。
对于ubuntu,我不清楚。
在此之后重启apache。
更新:
要检查扩展程序是否已启用,您可以使用:
if (extension_loaded('mbstring')) {
//functions using mb string extensions
}
新更新:
if (extension_loaded('mbstring')) {
mb_internal_encoding(get_bloginfo('charset'));
}
我认为WordPress有一个内置函数wp_set_internal_encoding()
来处理这些。您只需要在文件中调用此函数即可。 wp_set_internal_encoding()的作用与我上面解释的相同:
function wp_set_internal_encoding() {
if ( function_exists( 'mb_internal_encoding' ) ) {
if ( !@mb_internal_encoding( get_option( 'blog_charset' ) ) )
mb_internal_encoding( 'UTF-8' );
}
}
它检查mb_internal_encoding
function
是否存在(该函数仅在加载扩展时才存在)。这是另一种检查函数是否存在的方法。
优点是你必须只调用该函数而不必担心其他事情。 WordPress将处理这些。
NEW UPDATE:
对于第一个错误,请将mb_strlen
函数包含在function_exists ()
内
喜欢:
if ( function_exists( 'mb_strlen' ) ) {
mb_strlen();
}
如果您启用了扩展程序且可能已损坏,则可能是。因此,最好在调用之前检查函数是否存在。
对于第二个错误,您无需在functions.php或任何其他文件中添加wp_set_internal_encoding
。它是一个内置功能的WordPress。您只需要调用函数wp_set_internal_encoding
。您实际上是在声明存在的功能。所以PHP将返回致命错误。
NEW UPDATE
在你的函数中你有mb_strlen只能启用mbstring扩展。所以你应该改变
function theme_trim_long_str($str, $len = 50, $sep = ' '){
$words = split($sep, $str);
$wcount = count($words);
while( $wcount > 0 && mb_strlen(join($sep, array_slice($words, 0, $wcount))) > $len) $wcount--;
if ($wcount != count($words)) {
$str = join($sep, array_slice($words, 0, $wcount)) . '…';
}
return $str;
}
到
function theme_trim_long_str($str, $len = 50, $sep = ' '){
$words = split($sep, $str);
$wcount = count($words);
if ( function_exists( 'mb_strlen' ) ) {
while( $wcount > 0 && mb_strlen(join($sep, array_slice($words, 0, $wcount))) > $len)
$wcount--;
} else {
while( $wcount > 0 && strlen(join($sep, array_slice($words, 0, $wcount))) > $len)
$wcount--;
}
if ($wcount != count($words)) {
$str = join($sep, array_slice($words, 0, $wcount)) . '…';
}
return $str;
}
希望这可以帮助你:)
答案 2 :(得分:1)
很多事情都可能发生。如果文件未正确上传,则可能会发生。如果主题与函数文件有任何错误,那么它也可能发生。