PHP Problem bei der Ausführung eines externen Programms

Hallo!
Nahe der Verzweiflung wende ich mich nochmals hilfesuchend an euch...
Zum Thema:
Aus einer PHP5 Anwendung heraus möchte ich eine Ausgabe in eine HTML Datei Leiten und daraus eine PDF erstellen.
Der Code für den Test:
PHP:
    $fp = fopen ("./temp.html", "w");
    fputs ($fp, $header . $body);
    fclose($fp);
 
    exec ("F:\\iis\\testing\\pdf\\html2pdf.exe F:\\iis\\testing\\temp.html F:\\iis\\testing\\temp.pdf", $exout) || die ("fehler");
    print_r ($exout);
Es gab vorher noch Rechteprobleme, aber html2pdf.exe wird nun auch ausgeführt:
Code:
Array
(
    [0] => Input  URL :F:\iis\testing\temp.html
    [1] => Output pdf :F:\iis\testing\temp.pdf
)
Aber die Rückmeldung Document done fehlt in der Ausgabe, die html2pdf.exe eigentlich mitliefert. Die PDF wird auch nicht erstellt.
Das Verzeichnis hat für den IIS Gast Account alle Rechte - das Schreiben in eine HTML im selben Verzeichnis klappt auch einwandfrei.
Das Tool html2pdf selber funktioniert über die Kommandozeile auch einwandfrei.
Ich habe keine Idee mehr, wonach ich suchen sollte.

Der Webserver ist ein IIS6 unter Windows Server 2003 SBS
Bin für jede Hilfe dankbar!
 
Alternativ kannst du eine Bibliothek nutzen, die dir das PDF Dokument erzeugt. Ist ohnehin schöner und du hast mehr Freiheiten - dafür natürlich ein klein wenig mehr Programmieraufwand ;)
Ich hab mit Google mal ein Beispiel gefunden: Klick Mich

Da aktuelle HTML Dokumente sehr stark XML Dokumente ähneln, solltest du noch XSL-T in betracht ziehen. Du schreibst dir ein kleines Stylesheet, welches du dann durch einen XSL-Prozessor jagst. Ausgabe ist dann ein PDF Dokument. Schau dir folgendes mal an: Wikipedia - XSL Transformation
PHP ist XSL fähig, sobald die libxml mit eingebunden wird: PHP XSL
 
die alternativen sind schon nicht schlecht - es gibt aber bei mir einige gründe die dagegen sprechen:

- die eigentliche ausgabe ist immer anders und sehr groß
- ich habe zeitdruck und kann die funktionen für die ausgaben nicht komplett umzuschreiben.

wenn das erstmal funktioniert und benutzbar ist, habe ich auch die zeit, diese alternativen umzusetzen.
 
Hallo!
Aber die Rückmeldung Document done fehlt in der Ausgabe, die html2pdf.exe eigentlich mitliefert. Die PDF wird auch nicht erstellt.

exec() führt ein gegebenen Befehl aus, ohne eine Ausgabe zu erzeugen. Die Funktion gibt lediglich die letzte Zeile aus dem Befehlsergebnis zurück. Wenn Sie auf die direkte Rückgabe/ Ausgabe eines Befehls angewiesen sind, dann benutzen Sie stattdessen die Funktion passthru().
Das könnte schonmal der Grund sein, dass du keine Ausgabe bekommst.

Folglich solltest du dir das Rechtemanagement nochmal ansehen wenn keine Ausgabe erzeugt wird. Vorrübergehend dem Ordner für Anyone-Read-Write Access erteilen.

PHP Manual - exec

Alternativ zu exec() würde ich mir aber nicht passthru() sondern popen() ansehen.
 
mit exec kann man die ausgaben abfangen und in ein array schreiben.

das problem liegt am tool selbst: dem IIS User fehlt irgend eine berechtigung, html2pdf komplett auszuführen. ich lasse diese webseite unter einem anderen benutzer mit user rechten laufen und dann klappts.

sicherheitstechnisch zwar nicht schön - aber in dem fall vertretbar, da der server nur intern erreichbar ist

problem (für's erste) gelöst - vielen dank!
 
Zurück
Oben