globe: proc_open() und Daten an STDIN schicken

Beitrag lesen

n'abend,

ich versuche gerade aus einem PHP-Script ein LaTeX-Dokument mittels pdflatex nach PDF konvertieren zu lassen. Da das Tex-Gedöns vom Script erstellt wurde, wollte ich das direkt an pdflatex pipen und nicht erst in eine Datei schreiben, welche ich pdflatex dann wieder als Argument übergebe.

Im Wesentlichen habe folgendes versucht:

$env = array( 'PATH' => '$PATH:/usr/bin:/usr/local/bin:/usr/texbin:/opt/local/bin' );  
$fd = array(  
  array( 'pipe', 'r' ), // STDIN  
  array( 'pipe', 'w' ), // STDOUT  
  array( 'pipe', 'w' ), // STDERR  
);  
$pipes = array();  
$s = proc_open( '/usr/texbin/pdflatex -output-directory="/tmp/" -jobname="pdftest" -interaction=batchmode', $fd, $pipes, '/tmp/', $env );  
fwrite( $pipes[0], $latex );  
fflush( $pipes[0] );  
fclose( $pipes[0] );

erzeugt mir im Protokoll (/tmp/pdftest.log) die folgende Info:

**\documentclass[11pt]{amsart}  
! Emergency stop.  
<*> \documentclass[11pt]{amsart}  
  
*** (job aborted, no legal \end found)

Soweit so schlecht.

Was passiert denn, wenn man das ganze umbaut?
$s = proc_open( '/bin/cat > /tmp/transfer.tex; /usr/texbin/pdflatex -output-directory="/tmp/" -jobname="pdftest" -interaction=batchmode transfer.tex', $fd, $pipes, '/tmp/', $env );
=> Und Voila, ich bekomme das gewünschte Resultat unter /tmp/pdftest.pdf zu sehen.

Was passiert denn, wenn man das ganze umbaut?
$s = proc_open( '/bin/cat | /usr/texbin/pdflatex -output-directory="/tmp/" -jobname="pdftest" -interaction=batchmode', $fd, $pipes, '/tmp/', $env );
=> Wieder der selbe Fehler wie beim ersten Versuch.

Nach 'ner #selfhtml Session mit dedlfix sind auch Spielereien wie usleep() an allen möglichen Ecken ausprobiert worden - ohne Erfolg.

Hat da mal jemand 'ne Idee wo das Problem liegen könnte?

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|