SorgenkindMech: COM / DCOM fehler

Beitrag lesen

moins

ich bin mal wieder am verzweifeln ;(

folgende situation:

es geht darum, per PHP einen labeldrucker anzusteuern, was bisher auch immer funktionierte
leider funktioniert es jetzt nicht mehr, und ich weiß nicht, warum, da sich am rechner selbst meines wissens nach nichts geändert hat

das ganze funktioniert folgendermaßen:

es wird eim com-objekt des druckers geladen
danach wird eine template-datei geladen
in dieser werdendie entsprechenden werte verändert, und dann ausgedruckt

dazu folgender php-quelltext:

<?php
ignore_user_abort(1);
if(!isset($_POST['vorlage'])) $_POST['vorlage']="rtv";
$_POST['mnr_datum']=@$_POST['fznr'].@$_POST['mnr'].@$_POST['datum'];
$obj=new COM("BrssCom.Document") or die("<script language='javascript'> alert('Klasse konnte nicht geladen werden'); </script>");
$obj->Open("c:\rtv_p_touch\".$_POST['vorlage'].".lbl") or die("<script language='javascript'> alert('Datei konnte nicht geöffnet werden!'); </script>");
if($_POST['vorlage']=="rtv")
{
 $felder=array("abnr", "fgnr", "mnr_datum");
}
elseif($_POST['vorlage']=="normal")
{
 $felder=array("BARCODE", "artnr", "text1", "text2", "preis");
 $_POST['text1']=substr($_POST['text'],0,37);
 if(strlen($_POST['text'])>28) $_POST['text2']=substr($_POST['text'],37,18);
 else $_POST['text2']="";
 $_POST['preis']=$_POST['preis']."€";
}
elseif($_POST['vorlage']=="name")
{
 $felder=array("NAME");
}
else
{
 die("<script language='javascript'> alert('Es wurde eine falsche Vorlage übergeben!'); </script>");
}
foreach($felder as $feldindex => $feld)
{
 if($feld!="BARCODE")
 {
  $index=$obj->GetTextIndex($feld);
  if($index==-1) die("<script language='javascript'> alert('Fehler beim Finden des Textes ".$feld."!'); </script>");
  else
  {
   $obj->SetText($index, $_POST[$feld]);
   if($feld=="text")
   {

}
  }
 }
 else
 {
  if(!$obj->SetBarcodeData(0, $_POST[$feld]))
  {
   die("<script language='javascript'> alert('Fehler beim Ändern des Barcodes'); </script>");
  }

}
}

if(!isset($_POST['anzahl'])) $_POST['anzahl']=1;

$obj->DoPrint(0,"RTV, ".$_POST['anzahl']);
$obj->Close();
$obj=null;
?>
<script language='javascript'>
// alert("gedruckt");
window.close();
</script>

dieses script lief bisher immer einwandfrei

das Javascrip ist deshalb, weil die datei in einn quasi nicht für den user nicht sichtbaren frame geladen wird

so, und die ausgabe des scripts:

<br />
<b>Fatal error</b>:  Uncaught exception 'com_exception' with message 'Error [0x80020003] Mitglied nicht gefunden.
' in C:\Daten\Roll-tech Verwaltung\rtv.php:5
Stack trace:
#0 C:\Daten\Roll-tech Verwaltung\rtv.php(5): unknown()
#1 {main}
  thrown in <b>C:\Daten\Roll-tech Verwaltung\rtv.php</b> on line <b>5</b><br />

sprich das ist die zeile, wo das objekt erstellt wird ...
ich kenn ja die meldung, von wegen die klasse konnte nicht geladen werden, aber die hier hatte ich noch nich

kleine hintergrund-infos:
OS: winXPPro
PHP: 5.1.2
das com-objekt wird interaktiv ausgeführt und hat für alle vorgänge volle sicherheitsberechtigungen (musste ich damals machen, damit der IIS-Prozess darauf zugreifen kann)
achja, http-server ist IIS 5.1, PHP als ISAPI-Modul

tja, und da steh ich nun und guck dumm aus der wäsche

wär froh wenn da jemand schonmal erfahrungen mit gemacht hat

PS: habe gerade mal das Beispielscript von der doku getestet:

<?php
// Word starten
$word = new COM("word.application") or die("Konnte Word nicht instantiieren");
print "Word geladen, Version \n";

//ein leeres Dokument öffnen
$word->Documents->Add();

//irgendetwas tun
$word->Selection->TypeText("Dies ist ein Test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//Word schließen
$word->Quit();

//Das Objekt freigeben
$word->Release();
$word = null;
?>

(etwas gekürzt)

ausgabe:

Word geladen, Version
Fatal error: Uncaught exception 'com_exception' with message 'Unable to lookup `Documents': Fehler beim Zugriff auf OLE-Registrierung. ' in C:\Daten\Roll-tech Verwaltung\alt\com.php:7 Stack trace: #0 C:\Daten\Roll-tech Verwaltung\alt\com.php(7): unknown() #1 {main} thrown in C:\Daten\Roll-tech Verwaltung\alt\com.php on line 7

tja ....

hoffe jemand weiß was, bis denn dan