-2

我最近在 WordPress 上安装了一个主题,当它被激活时,它只会导致一个空白的白屏。造成这种情况的可能原因是什么?以及开始发现问题的步骤。

当将站点从我们的测试服务器移动到托管公司的服务器时,问题就暴露出来了,我们曾经用它来托管各种其他 WordPress 站点。在我的实例中,白屏的可能原因是什么?以及开始发现问题的步骤。我在研究之后采取了一些措施,例如增加内存限制和禁用插件等,但它们在原始服务器上运行良好,所以我怀疑它可能是由插件等引起的。

谢谢

更新

对,到目前为止,我已将内存限制增加到 128M,并禁用了所有插件以及临时命名它们的文件夹。

由于@Sabari 的建议,我已启用调试,这导致了以下错误:致命错误:调用/home/neatly/public_html/wp-content/themes/best_wedding_dress-babe23c7e828662f1a07c296a5608f52/functions中的未定义函数 mb_internal_encoding() .php在第12行

我对 PHP 并没有什么用处,但是您可以就如何进行,例如在哪里以及如何定义 mb_internal_encoding 提出一些建议。这是第 12 行的代码:

mb_internal_encoding(get_bloginfo('charset'));

我想重申,这在我们的测试服务器上运行良好,所有这些问题只有在移动到新服务器时才会出现。我已经多次将 WordPress 网站从一台服务器转移到另一台服务器,并在这个特定网站上重新下载并上传了 3 次内容和数据库。两个版本(测试服务器和新服务器)具有相同版本的 WordPress,因此新服务器可能具有不同的技术。这些方面是否有任何可能导致此错误的内容?

Sabari建议的答案

通过在我们的虚拟主机服务器上启用和配置 mbstring(多字节支持)解决了这个问题。

4

3 回答 3

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);
于 2013-04-09T07:14:29.270 回答
2

我认为您的问题与mbstring未启用扩展有关。

mb_internal_encoding功能需要mbstring扩展。它是一个non-default扩展,默认情况下未启用。

您可以查看这里以获取有关如何安装和配置mb_string http://www.php.net/mbstring的更多信息。

如果您在 Windows 上,请取消注释extension=php_mbstring.dll;php.ini 中的行(在 extension=php_mbstring.dll 之前删除分号)。

如果你在linux上,你可以试试yum install php-mbstringcentos。

对于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 将处理这些 .

新更新:

mb_strlen对于您的第一个错误,请将您的函数包装在function_exists () like 中:

if ( function_exists( 'mb_strlen' ) ) {
    mb_strlen();
 }

可能是如果您启用了扩展程序并且它可能已损坏。所以最好在调用之前检查函数是否存在。

对于第二个错误,您不需要wp_set_internal_encoding在 functions.php 或任何其他文件中添加。它是 WordPress 的内置功能。你只需要调用函数wp_set_internal_encoding。您实际上是在声明存在的功能。所以 PHP 会返回致命错误。

新更新

在您的函数中,您有 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;
} 

希望这可以帮助你:)

于 2013-04-09T07:44:45.560 回答
1

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

于 2013-04-09T07:05:16.047 回答