Hackerboard WikiHaboBlog

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Problem bei der Ausführung eines externen Programms

Diskussion: Problem bei der Ausführung eines externen Programms im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Hallo! Nahe der Verzweiflung wende ich mich nochmals hilfesuchend an euch... Zum Thema: Aus einer PHP5 Anwendung heraus möchte ich ...

Antwort
Alt 21.08.10, 15:50   #1 (permalink)
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard 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-Code:
    $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!
ShadowFire ist offline   Mit Zitat antworten
Alt 21.08.10, 16:04   #2 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

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
blue182 ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 21.08.10, 16:12   #3 (permalink)
Themenstarter
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard

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.
ShadowFire ist offline   Mit Zitat antworten
Alt 21.08.10, 17:04   #4 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von ShadowFire Beitrag anzeigen
Hallo!
Aber die Rückmeldung Document done fehlt in der Ausgabe, die html2pdf.exe eigentlich mitliefert. Die PDF wird auch nicht erstellt.
Zitat:
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.
blue182 ist offline   Mit Zitat antworten
Alt 21.08.10, 18:17   #5 (permalink)
Themenstarter
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard

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!
ShadowFire ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » PHP Problem bei der Ausführung eines externen Programms
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61