PHP-为什么在使用require_once后我得到Undefined变量?

时间:2014-06-21 14:37:53

标签: php arrays variables curl global-variables

你好我告诉他们我有以下问题: 我有2个文件是php中的一个类,另一个是调用这个类并显示结果的脚本,有趣的是,在我的计算机上,localhost在其他服务器上工作正常,这些服务器有php 5.4也喜欢运行,但是在hostmonster中工作只有一天,第二天停止工作,我提供支持,并说我的东西quue错误代码抛出我是:

  

PHP注意:未定义的变量:导致第25行的/home/user/public_html/rox.php

编码rox.php

    <?php
          // use the IceCast class to obtain the stream details
          require_once('icecast.php');
          $oIceCast = new IceCast();

          // set server and mount
          $server = 'http://giss.tv:8000';
          $file   = '/status.xsl?mount=/radiosuguaFM.mp3';

          $oIceCast->setUrl($server,$file);
          $status = $oIceCast->getStatus();
          $result .= <<<EOF
    <div><strong>Nombre</strong> {$status['title']}</div>
    <div><strong>Descripcion</strong> {$status['description']}</div>
    <div><strong>Inicio de la transmision</strong> {$status['mount_start']}</div>
    <div><strong>Escuchas</strong> {$status['listeners']}</div>
    <div><strong>Max escuchas</strong> {$status['most_listeners']}</div>
    <div><strong>Url</strong> {$status['url']}</div>
    <div><strong>Artista actual</strong> {$status['now_playing']['artist']}</div>
    <div><strong>Track actual</strong> {$status['now_playing']['track']}</div>
    <audio controls>
    <source src="http://giss.tv:8000/radiosuguaFM.mp3">
    <!-- This is Where You Enter Your Flash Fall Back -->
    </audio>
EOF;
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8" />
      <meta property="og:site_name" content="Script Tutorials" />
      <meta property="og:title" content="Script to read information from audio stream | Script Tutorials" />
      <meta property="og:image" content="http://www.script-tutorials.com/demos/398/thumb.png" />
      <meta property="og:type" content="website" />
      <meta name="description" content="Script to read information from audio stream - Script Tutorials">
      <title>Script to read information from audio stream | Script Tutorials</title>
      <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
      <div class="container">
        <?= $result ?>
      </div><!--/.container-->
    </body>
    </html>
?>

这个代码de class icecast.php:

<?php
class IceCast {
  var $server = '';
  var $stats_file = "/status.xsl";
  var $radio_info = array();

  function __construct() {
    //build array to store our radio stats for later use        
    $this->radio_info['server'] = $this->server;
    $this->radio_info['title'] = 'Offline';
    $this->radio_info['description'] = 'Radio offline';
    $this->radio_info['content_type'] = '';
    $this->radio_info['mount_start'] = '';
    $this->radio_info['bit_rate'] = '';
    $this->radio_info['listeners'] = '';
    $this->radio_info['most_listeners'] = '';
    $this->radio_info['genre'] = '';
    $this->radio_info['url'] = '';
    $this->radio_info['now_playing'] = array();
    $this->radio_info['now_playing']['artist'] = 'Unknown';
    $this->radio_info['now_playing']['track'] = 'Unknown';
  }

    function setUrl($url,$file) {
        $this->server=$url;
        $this->stats_file=$file;
        $this->radio_info['server'] = $this->server;
    }

  private function fetch() {
    //create a new curl resource
    $ch = curl_init();

    //set url
    curl_setopt($ch,CURLOPT_URL, $this->server . $this->stats_file);

    //return as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //$output = our stauts.xsl file
    $output = curl_exec($ch);

    //close curl resource to free up system resources
    curl_close($ch);

    return $output;
  }

  function getStatus() {
    $output = $this->fetch();

    //loop through $ouput and sort into our different arrays
    $temp_array = array();

    $search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>";
    $search_td = array('<td class="streamdata">', '</td>');


    if (preg_match_all("/$search_for/siU", $output, $matches)) {
      foreach ($matches[0] as $match) {
        $to_push = str_replace($search_td, '', $match);
        $to_push = trim($to_push);
        array_push($temp_array, $to_push);
      }
    }

    if (count($temp_array)) {
      //sort our temp array into our ral array
      $this->radio_info['title'] = $temp_array[0];
      $this->radio_info['description'] = $temp_array[1];
      $this->radio_info['content_type'] = $temp_array[2];
      $this->radio_info['mount_start'] = $temp_array[3];
      $this->radio_info['bit_rate'] = $temp_array[4];
      $this->radio_info['listeners'] = $temp_array[5];
      $this->radio_info['most_listeners'] = $temp_array[6];
      $this->radio_info['genre'] = $temp_array[7];
      $this->radio_info['url'] = $temp_array[8];

      if (isset($temp_array[9])) {
        $x = explode(" - ", $temp_array[9]);
        $this->radio_info['now_playing']['artist'] = $x[0];
        $this->radio_info['now_playing']['track'] = $x[1];
      }
    }
    return $this->radio_info;
  }
}
?>

非常感谢你的帮助

2 个答案:

答案 0 :(得分:1)

首先检查是否已定义然后使用

我认为由于这个$result .= <<<EOF你得到了错误

require_once('icecast.php');
$oIceCast = new IceCast();
.....
......

if(empty($result))
{
$result = '';
}
.....
.....

$result .= <<<EOF.....
.......
.......

答案 1 :(得分:1)

您正在尝试将追加添加到现有变量中:

$result .= <<<EOF

$result确实在这里不存在 您只需要创建并分配变量:

$result = <<<EOF