白色死亡之屏'原因 - WordPress CMS

时间:2013-04-09 07:01:56

标签: php wordpress content-management-system

我最近在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(多字节支持)解决了这个问题。

3 个答案:

答案 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)

很多事情都可能发生。如果文件未正确上传,则可能会发生。如果主题与函数文件有任何错误,那么它也可能发生。