3

我对这个错误非常恼火:

如果我注释掉

require_once'../class/myclass.class.php'; 

显示图像。如果我取消注释调用 myclass.class.php 的行,我会收到以下消息:

"The image "http://..." cannot be displayed because it contains errors."

我的代码很简单:

myclass.class.php :

<?php    
class myclass {
  public function getPanelData( $model ){
    $aFieldsData = array(
      'PAN35'=>array(
        'col'=>1,
        'row'=>3,
        'v-font'=>10,
        'v-marge-top'=>0,
        'v-marge-right'=>1,
        'v-marge-bottom'=>0,
        'v-marge-left'=>1
      )
    );
    if( key_exists($model, $aFieldsData) )
      return $aFieldsData[$model];
    else
      return false;
    }
  }
?>

img.inc.php:

<?php
  session_start();
  require_once('myfunctions.inc.php');
  require_once('../class/myclass.class.php');
  $oData = new myclass();
  header('Content-Type: image/png');
  $sPanelModel = $_SESSION['produit'];
  $sEtiquette = '../img/etiquettes/label_'.$sPanelModel.'_preview.png';
  $rImg = imagecreatefrompng($sEtiquette);
  imagepng($rImg);
  imagedestroy($rImg);
?>

注意:如果我注释 require_once 调用 myclass.class.php,则此代码有效。调用 functions.inc.php 有效(只有少数函数)。

tree :
/
 + class
   + myclass.class.php
 + inc
   + functions.inc.php
   + img.inc.php
 + images
   + etiquettes
4

1 回答 1

3

如果确实可以通过取消注释 myclass.class.php 的 require() 来工作,那么最可能的原因是该文件<?php?>. 这会将 Ascii 字符添加到图像的输出中,或者在 header() 语句中插入 php 错误消息(无法发送标头),从而弄乱您的文件。但是,正如我在评论中提到的,如果您的唯一目的是输出图片,您可以使用 readfile() 而不是创建图像实例。希望有帮助,斯特凡

于 2012-04-24T12:58:44.813 回答