【问题标题】:Struggling to find the PHP 7 incompatibility with this code努力寻找与此代码的 PHP 7 不兼容
【发布时间】:2018-08-05 05:03:50
【问题描述】:

我已经通过 PHP 7 兼容性检查器运行了这段代码,它没有返回任何错误。

但是,当我将服务器从 PHP 5.6 切换到 PHP 7 时,此代码会自动停止工作。它没有输出啤酒水龙头列表,而是什么都不输出。

我在这里缺少什么?显然有什么东西导致它与 PHP 7 中断,我只是无法终生发现它!

代码如下:

<?php

 get_header(); ?>

 <div class="page-container">

    <div class="section">
        <div class="parallax-img" style="background-image: url(<?php the_field('page_banner') ?>);"><h1><?php the_field('page_title') ?></h1></div>
        <div class="section-content">
            <?php the_field('page_content') ?>

                <?php                                                                    
                $string = 
                    $string = 
                    file_get_contents("https://server.digitalpour.com/DashboardServer/api/v3/MenuItems/53716a8dfb890c0d68677264/1/Tap?apiKey=53926cc7fb890c0528735cde");

                    $json_taps = json_decode($string, true);  


                $t=1; 
                echo '<div id="taplist-container">'; 

                foreach ($json_taps as $beverage) { 

                        $item_name = $beverage['MenuItemDisplayDetail']['DisplayName'];
                        $producer_name = $beverage['MenuItemProductDetail']['FullProducerList'];
                        $beverage_name = $beverage['MenuItemProductDetail']['BeverageNameWithVintage'];
                        $beverage_style = $beverage['MenuItemProductDetail']['FullStyleName'];
                        $beverage_color = $beverage['MenuItemProductDetail']['Beverage']['StyleColor'];
                        $year = $beverage['MenuItemProductDetail']['Year'];
                        $logo = $beverage['MenuItemProductDetail']['Beverage']['ResolvedLogoImageUrl'];
                        $beverage_abv = $beverage['MenuItemProductDetail']['Beverage']['Abv'];
                        $beverage_ibu = $beverage['MenuItemProductDetail']['Beverage']['Ibu'];
                        $beverage_type = $beverage['MenuItemProductDetail']['BeverageType'];
                        $beverage_description = $beverage['MenuItemProductDetail']['Beverage']['CustomDescription'];
                        $beer_advocate = $beverage['MenuItemProductDetail']['Beverage']['BeerAdvocateUrl'];
                        $rate_beer = $beverage['MenuItemProductDetail']['Beverage']['RateBeerUrl'];

                        $price = $beverage['MenuItemProductDetail']['Prices'][0]['Price'];
                        $size = $beverage['MenuItemProductDetail']['Prices'][0]['DisplayName'];

                        $producer_location = "";
                        $producer_url = "";
                        switch($beverage_type) {
                            case "Beer":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['Brewery']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['Brewery']['BreweryUrl'];
                                break;
                            case "Cider":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['Cidery']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['Cidery']['CideryUrl'];
                                break;
                            case "Mead":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['Meadery']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['Meadery']['MeaderyUrl'];
                                break;
                            case "Wine":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['Winery']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['Winery']['WineryUrl'];
                                break;
                            case "Kombucha":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['KombuchaMaker']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['KombuchaMaker']['Url'];
                                break;
                            case "Soft Drink":
                                $producer_location = $beverage['MenuItemProductDetail']['Beverage']['SoftDrinkMaker']['Location'];
                                $producer_url = $beverage['MenuItemProductDetail']['Beverage']['SoftDrinkMaker']['Url'];
                                break;
                        }
                        $date_put_on = $beverage['DatePutOn']; 
                        $bottle_size = $beverage['MenuItemProductDetail']['Prices'][0]['Size'];   
                        $bottle_price = $beverage['MenuItemProductDetail']['Prices'][0]['Price'];
                        $bottlePrices = $beverage['MenuItemProductDetail']['Prices'];
                        $pricesSizesHtml = "<strong>Sizes &amp; Prices</strong><br> ";
                            foreach($bottlePrices as $prices){
                                $pricesSizesHtml .=  $prices['DisplayName'] . ": $" . $prices['Price'] . "&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;";
                            }
                        $beverage_ps = $beverage['MenuItemProductDetail']['Prices'][0]['DisplayName']; 
                        $in_bottles = $beverage['MenuItemProductDetail']['AvailableInBottles'];
                        $keg_size = $beverage['MenuItemProductDetail']['KegSize'];
                        $oz_remaining = $beverage['MenuItemProductDetail']['EstimatedOzLeft'];
                        $scale = 1.0; //


                    //calculating percentage of keg remaining
                    // Get Percentage out of 100
                    if ( !empty($keg_size) ) { $percent = $oz_remaining  / $keg_size; } 
                    else { $percent = 0; }

                    // Limit to 100 percent (if more than the max is allowed)
                    if ( $percent > 1 ) { $percent = 1; }     
                    if ( $percent < 0 ) { $percent = .005; }     
                    $percent_remaining = number_format($percent*100, 0);
                    if ( $percent_remaining < 1 ) {$percent_remaining = "< 1";}


                    //determine percent Left color
                    //                  |-----------Red ---------------------------|   |-------Green--------------------| |Blue|
                    $percent_left_color = (max(0,min(255,511 * (1-$percent))) * 65536) + (max(0,min(255,511 * $percent)) * 256) + 40;

                    $html =  
                        '<div class="keg-container">'.
                        '<div class="boxfielddata">'. 

                        //'<div class="brewery-logo"><img src="'.$logo.'" alt="'.$producer_name.'" /></div>'.
                        //'<div class="brewery-logo">'.(!empty($logo) ? '<img src="'.$logo.'">' : '').$logo.''.'</div>'.
                        '<div class="brewery-logo">'.(!empty($logo) ? '<img src="'.$logo.'" />' : '').'</div>'.
                        '<div class="keg-info">'.         
                        '<div class="brewery">'.(!empty($producer_url) ? '<a href="'.$producer_url.'" target="_blank">' : '</a>').$producer_name.'</a> '.'</div>'.
                        '<div class="beverage-name">'.$beverage_name.'</div>'.
                        '<div class="beverage-type">'.$beverage_style.'</div>'.
                        '<div class="abv">ABV: '.$beverage_abv.'% | IBU: '.$beverage_ibu.'</div>'.
                        //'<div class="prices">'.$pricesSizesHtml.'</div>'.

                        //'<div class="reviews">
                            //<strong>Reviews</strong><br />
                            //<a href="'.$beer_advocate.'" target="_blank" rel="nofollow">'.$beer_advocate.'</a> | <a href="'.$rate_beer.'" target="_blank" rel="nofollow">'.$rate_beer.'</a>
                        //</div>'.

                        '<div class="beverage-description">'.$beverage_description.'</div>'.

                        '<div class="beverage-type">'.$displaySize.'</div>'.
                        '<span>'.($beverage_ps == '12oz' ? $beverage_ps : '').'</span>'.
                        '<span style="position:relative;">'.($in_bottles == TRUE 
                ? '<a href="/dev/?page_id=7&so=brewery">Available in bottles!</a>' : 
                '').'</span>'.    
                //PERCENTAGE AND COLOR
                        '<div class="percent-remaining" style="width:'.round(100 * $scale).'px;">'.
                        '<div style="width:'.round(max($percent*100,5) * $scale).'px; height: 20px; background-color: #'.substr("000000".dechex($percent_left_color),-6).';"></div>'.
                        '</div>'.
                        '<div class="percent-number">'.$percent_remaining.'%</div>'.
                        '</div></div>'. 
                        '</div>'. 

                        ($t == $countnumrows ? '</div><div id="shim"></div><div id="datafieldcontainer">' : '');    

                echo $html;
                $t++;     
                }

                ?>  

            <div id="digital-pour"><a href="http://www.digitalpour.com" rel="nofollow" target="_blank"><img src="/wp-content/themes/mcnallys/images/digitalpour.jpg" alt="DigitalPour"></a></div>
        </div>
    </div>

 </div>

<?php get_footer(); ?>

【问题讨论】:

  • 你查看错误日志了吗?
  • 尝试首先设置错误显示在:ini_set('display_errors', 'stdout');;错误应该在屏幕上
  • 皮埃尔,非常感谢,成功了!结果我不得不将我的 php.ini 设置更改为如下所示:allow_url_fopen = ON allow_url_include = ON

标签: php json php-7


【解决方案1】:

原来我不得不将我的 php.ini 设置更改为如下所示:

allow_url_fopen = 开启

allow_url_include = 开启

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多