从php 5.3升级到5.4.33之后的wordpress主题错误

时间:2015-11-07 21:19:10

标签: php

我刚刚为一堆wordpress托管网站切换了服务器。在旧服务器上我们有php版本5.3,在新版本上我们得到5.4.33。问题是我们在这次更改后会遇到很多错误,而且有些错误(对我而言)很难解决。请看下面的代码:)

这些是我得到的错误:

  1. 注意:未定义的变量:第138行/wp-content/themes/livescore/library/functions-single-match.php中的图标

  2. 注意:未定义的变量:第145行/wp-content/themes/livescore/library/functions-single-match.php中的图片

  3. 注意:未定义的变量:第179行/wp-content/themes/livescore/library/functions-single-match.php中的图标

  4. 注意:未定义的变量:第184行/wp-content/themes/livescore/library/functions-single-match.php中的图片

  5. 这是下面的函数single-match.php:

    <?php
    
    function lastMatches( $teamName, $directTeam = '' )
    
    {
    
        global $wpdb_mysqli;
    
        $matches = array();
    
        if ($directTeam)
    
        {
    
    
            $args = array(
    
                'post_type' => 'matches',
    
                'post_status' => 'publish',
    
                'posts_per_page' => 10,
    
                'meta_query' => array(
    
                    array(
    
                        'key' => '_live_echipa_gazda',
    
                        'value' => $directTeam,
    
                        'compare' => '='
    
                    ),
    
                    array(
    
                        'key' => '_live_echipa_oaspete',
    
                        'value' => $teamName,
    
                        'compare' => '='
    
                    )
    
                )
    
            );
    
        }
    
        else
    
        {
    
            $args = array(
    
                'post_type' => 'matches',
    
                'post_status' => 'publish',
    
                'posts_per_page' => 10,
    
                'meta_query' => array(
    
                    'relation' => 'OR',
    
                    array(
    
                        'key' => '_live_echipa_gazda',
    
                        'value' => $teamName,
    
                        'compare' => '='
    
                    ),
    
                    array(
    
                        'key' => '_live_echipa_oaspete',
    
                        'value' => $teamName,
    
                        'compare' => '='
    
                    ),
    
                )
    
            );
    
        }
    
    
    
    
    
    
    
    
    
        $query = new WP_Query( $args );
    
    
    
        $matches = $query->posts;
    
    
    
        return $matches;
    
    }
    
    
    
    function matchStatusGazde( $matchID )
    
    {
    
        $statusIstoric = get_post_meta( $matchID, '_live_status_meci_gazde', true );
    
        $result = new stdClass();
        switch ($statusIstoric)
        {
            case 'v':
                 $icon = 'smileyface1.png';
                break;
            case 'e':
               $icon = 'smileyface3.png';
                break;
            case 'i':
               $icon = 'smileyface2.png';
            default:
                break;
        }
    
        if ($icon)
        {
            $pathImg = get_stylesheet_directory_uri() . "/library/images/$icon";
            $image = "<img src='$pathImg' border='0'/>";
    
        }
    
    
        $result->image = $image;
    
    
    
        return $result;
    
    }
    
    
    
    
    
    function matchStatusOaspeti( $matchID )
    
    {
        $statusIstoric = get_post_meta( $matchID, '_live_status_meci_oaspeti', true );
    
        $result = new stdClass();
    
        switch ($statusIstoric)
        {
            case 'v':
                $icon = 'smileyface1.png';
                break;
            case 'e':
                $icon = 'smileyface3.png';
                break;
            case 'i':
                $icon = 'smileyface2.png';
            default:
                break;
    
        }
        if ($icon)
        {
            $pathImg = get_stylesheet_directory_uri() . "/library/images/$icon";
            $image = "<img src='$pathImg' border='0'/>";
        }
    
        $result->image = $image;
    
        return $result;
    
    }
    

1 个答案:

答案 0 :(得分:0)

由于未定义案例的定义方式,存在未定义的变量。

matchStatusGazde()matchStatusOaspeti()都需要修复。以下是一种方法的示例。

function matchStatusOaspeti( $matchID )
{
    $statusIstoric = get_post_meta( $matchID, '_live_status_meci_oaspeti', true );
    $result = new stdClass();
    switch ($statusIstoric)
    {
        case 'v':
            $icon = 'smileyface1.png';
            break;
        case 'e':
            $icon = 'smileyface3.png';
            break;
        case 'i':
            $icon = 'smileyface2.png';
        default:
            // define $icon as false
            $icon = false;
            break;
    }
    // if a case above is not evaluated and there is no default then $icon would not be set and this returns a notice
    if ($icon)
    {
        $pathImg = get_stylesheet_directory_uri() . "/library/images/$icon";
        $image = "<img src='$pathImg' border='0'/>";
    }
    else
    {
        // if $image is only defined if $icon is set then $image would be undefined and this returns a notice
        $image = false; // or '' or 0 depending on how the result is used
    }
    $result->image = $image;
    return $result;
}

最可能的原因不是PHP版本的更改,而是php.ini中的display_errors设置。即在旧服务器上,display_errors设置可能没有包含通知,而在新服务器上则显示。

对于生产服务器,建议您使用

E_ALL & ~E_DEPRECATED

在开发中你应该使用

E_ALL | E_STRICT

这样您就可以追踪这些类型的通知(例如未定义的变量)并修复。

您可以使用ini_set()

更改php.ini文件或代码中的值