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を呼び出してコメントした場合に機能します。関数.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 に答える