PDF-Export



  • Hi,

    kann mir einer kurz erklären, was man alles tun muss, damit der PDF-Export funktioniert?
    (selbst gehostete Seite)

    Grüße


  • ChurchTools Mitarbeiter



  • Hi,

    also auf PhantomJS war ich auch schon.
    Weiß jetzt allerdings nicht, welche Version/Datei ich herunterladen muss und in dem bin Ordner ablegen muss.



  • Haben mit dem Einbinden auch Probleme. In CT 2.57 und 3.01 getestet.

    Den bin Ordner haben wir im Hauptverzeichnis erstellt.
    Er enthält die Dateien:
    .htaccess
    phantomjs (Version 2.0)

    Bei der Druckansicht von z.B. Abläufe wird oben rechts auch ein ein pdf Symbol angezeigt.

    Wenn man dieses anklickt erscheint leider nur folgende Fehlermeldung:

    Not Found

    The requested URL /sites/ct/files/downloader/agenda_pffOLMJz0a.pdf was not found on this server.


  • ChurchTools Mitarbeiter

    @sict Da mußt Du die entsprechende Version für Dein OS nehmen, auf dem der Server läuft. Für Linux mußt Du selber kompilieren, oder es gibt im Internet auch fertige Installation. Dann die fertige ausführbare Datei in bin reinlegen.

    @CCT Kannst Du mal mit der vorigen Version versuchen? 2.0 haben wir noch nicht getestet.



  • Soweit verstanden. Habt ihr da eine bereits komplilierte Datei oder ein Link wo man die her bekommt.

    Das sind unsere Systemdaten:

    System:
    Linux dd17510 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64


  • ChurchTools Mitarbeiter



  • Also wenn ich die phantomjs in das Verzeichnis bin (welches in der obersten Verzeichnisebene der CT Installation angelegt worden ist) reinkopiere, dann wir bei der Druckansicht das PDF Symbol angezeigt.

    Klickt man das PDF Symbol an, dann erscheint die Fehlermeldung in einem neuen tab:
    Not Found
    The requested URL /sites/ct/files/downloader/Printview_5e1wVz3OKw.pdf was not found on this server.

    Im CT Log steht dann:
    2015-11-02 22:56:43 1 person Administration Administration [1] [ERROR] file:/www/htdocs/v081317/churchtools/system/churchcore/classes/CTAbstractModule.class.php:413
    unlink(sites/ct/files/downloader/Printview_5e1wVz3OKw.pdf): No such file or directory

    2015-11-02 22:56:38 1 person Administration Administration [1] [ERROR] file:/www/htdocs/v081317/churchtools/system/churchcore/classes/CTAbstractModule.class.php:456
    Undefined variable: result

    Nun habe ich mal getestet was passiert, wenn ich einfach ein leere Datei mit dem Namen phantomjs im Verzeichnis bin erstelle.
    Das Ergebnis ist witzigerweise har genau das Gleiche. Das PDF Symbol wird angezeigt und die Fehlermeldungen und log Einträge sind bis auf den PDF Namen der ja immer wechselt auch gleich!

    Das muss doch ein bug sein. Anders kann ich mir das nicht erklären.



  • Bei mir funktioniert es jetzt mit der verlinkten Version. Danke!
    Im Safari Browser tut sich allerdings erst mal nichts, wenn man auf das PDF-Symbol klickt.
    In Chrome erscheint die Meldung, dass ein Popup blockiert wurde.
    Nach der Popup Deaktivierung funktioniert alles, aber wäre ganz praktisch, wenn auch im Safari ein entsprechender Hinweis eingeblendet wird, falls das möglich ist. :)


  • ChurchTools Mitarbeiter

    Hallo @CCT ,

    zwei Fehlerquellen, die mir einfallen: ist die phantomjs Datei im bin-Ordner für alle ausführbar? Ggf. mit chmod a+x phantomjs ausführbar machen.
    Eigentlich sollte in diesem Fall aber einen Fehlermeldung angezeigt werden, daß phantomjs nicht ausgeführt werden kann. Daß hier gar nichts angezeigt wird, deutet darauf hin, daß Dein Hoster nicht zuläßt, daß PHP externe Programme aufruft.
    Bitte führen mal folgenden Test durch: aus der Dropbox die Datei testexec.php in Euer ChurchTools-Installationsverzeichnis kopieren. Dann über den Browser aufrufen: https://Eure.Domain.de/testexec.php
    Wenn dann nicht "Exec ist erlaubt" angezeigt wird, erlaubt Euer Hoster bzw. Eure Server-Konfiguration nicht, daß PHP externe Programme aufruft. In diesem Fall solltet Ihr mal mit Eurem Hoster sprechen.



  • Habe glaub etwas eine lange Leitung. Komme nicht ganz nach, welche Version ich nun genau downloaden muss...

    Im Hilfe-Artikel steht, dass man die Version 1.9.0 nehmen muss. Diese finde ich leider nicht. Muss ich da einfach die letzte Version von 1.9.x nehmen?

    Was bedeutet Binary Version?
    Wo muss der Ordner bin sein? Auf der obersten Ebene, neben sites und system?



  • Hallo @mhuber ,

    wir haben die testexec.php mit verschiedenen Browsern getestet. Es wird beim Aufruf nichts angezeigt. Immer nur eine weiße Seite.

    Wir haben einen AllInkl Business Account. Von daher hätte ich ich solch ein Problem ausgeschlossen.
    Sollen wir da beim Service mal nachfragen, ob das tatsächlich sein kann?!?

    Viele Grüße
    CCT


  • ChurchTools Mitarbeiter

    @rschi: genau, jede 1.9.x Version sollte funktionieren. Runterladen kann man die hier:
    https://code.google.com/p/phantomjs/downloads
    Binary Version bedeutet einfach ein ausführbares Programm. Im Unterschied zu "Source" oder "Debugging Symbols", welche nur für die Entwicklung benötigt werden.
    Der Ordner muß auf die oberste Ebene, neben sites und system. Dort hinein kommt die Datei phantomjs (aus dem phantomjs-Paket aus dem bin/ Verzeichnis).

    @CCT: wenn nichts angezeigt wird, hat sich mein Verdacht bestätigt: Euer Hoster hat die PHP-Settings so eingerichtet, daß standardmäßig nicht erlaubt ist, aus PHP heraus Kommandos auf der Shell auszuführen (mit exec()). Da solltet Ihr mal beim Service nachfragen, ob/wo Ihr das einstellen könnt. Wahrscheinlich ist der safe_mode aktiviert. In neueren PHP-Versionen gibt es den gar nicht mehr (ab PHP 5.4.0)



  • Wo sollte denn der PDF-Export eigentlich überall zur Verfügung stehen?

    Habe nun die phantimjs ins entsprechende Verzeichnis abgelegt.
    Irgendwie stelle ich nichts fest, das sich damit ändert.


  • admin

    @rschi Z. B.: ChurchService // Druckansicht



  • @Andy Merci!

    In dem Fall funktioniert es bei mir nicht.
    Kann mir jemand weiterhelfen, weshalb wohl?
    Habe, wie gesagt, die phantomjs im bin-Verzeichnis abgelegt und mit der testexec.php kriege ich die Meldung "Exec ist erlaubt".


  • ChurchTools Mitarbeiter

    @rschi In der Druckansicht des Ablaufplans sollte es dann oben rechts so aussehen:
    Bildschirmfoto 2015-11-05 um 07.39.17.png
    Mit dem linken Icon kannst Du drucken, mit dem rechten ein PDF erzeugen.
    Werden Dir beide Icons angezeigt? Wenn ja, kommt eine Fehlermeldung, wenn Du auf das PDF-Icon klickst?

    Das erzeugte PDF wird in einem extra Tab geöffnet. Ggf. fragt Dich der Browser, ob Du das zulassen möchtest - bis Du das gemacht hast wird auch nichts angezeigt.

    Ich habe in die Dropbox ein erweitertes Test-Script gelegt: testphantomjs.php, welches prüft, ob PhantomJS richtig installiert ist. Wenn alles richtig läuft, zeigt das Script die PhantomJS-Version an.



  • @mhuber Vielen Dank für deine Bemühungen.

    Nein, mir wird nur das eine (Druck-) Symbol angezeigt. Das PDF-Icon fehlt.

    Habe das Script in das oberste Verzeichnis kopiert. Wenn ich es im Browser aufrufe, kriege ich die Meldung "Exec ist erlaubt , PhantomJS kann nicht ausgeführt werden."


  • ChurchTools Mitarbeiter

    @rschi Bitte prüfe mal, ob Deine Verzeichnis-Struktur wie folgt aufgebaut ist:

    |-- testphantomjs.php
    |-- index.php
    |-- system/
    |-- sites/
    |-- bin/
    .........|-- phantomjs

    Phantomjs muß im bin/ Verzeichnis liegen und muß ausführbar sein. Was zeigt
    "ls -la bin" ? Bitte ggf. "chmod a+x bin/phantomjs" im Wurzelverzeichnis ausführen, um Phantomjs ausführbar zu machen. Dann das Testscript nochmal im Browser aufrufen.



  • @mhuber Die Striktur sieht genau so aus, ausser dass ich auf das system-Verzeichnis einen symlink habe.
    Dies sollte ja aber kein Problem darstellen, oder?

    Wenn ich die testexec.php ausführe bekommt ich die Meldung "Exec ist erlaubt".
    Somit sollte Phantomjs ausführbar sein, oder nicht?


  • ChurchTools Mitarbeiter

    @rschi Nein. Die Meldung "Exec ist erlaubt" gibt das Testskript aus, wenn PHP generell externe Programme aufrufen kann.
    Wenn dann im Test ausgegeben wird, daß phantomjs nicht ausgeführt werden kann, liegt es daran, daß entweder phantomjs nicht gefunden wird (daher die Bitte, die Verzeichnisstruktur zu überprüfen), oder daß es nicht ausgeführt werden kann, weil Berechtigungen fehlen.
    Daher bitte mal die Berechtigungen auf der Kommandozeile prüfen. Mit ssh oder Putty einloggen und

    ls -la bin

    ausführen. Dann werden Dir die Berechtigungen für phantomjs angezeigt - es muß so ähnlich aussehen (kannst das Ergebnis gerne hier posten):

    rwxr-xr-x (username) (group) (size) (creation date) phantomjs

    Wenn nicht drei x angezeigt werden, müsstest Du ebenfalls auf der Kommandozeile

    chmod a+x bin/phantomjs

    ausführen (ggf. mit sudo), um phantomjs ausführbar zu machen. Dann nochmal den Test durchführen.



  • @mhuber Also, die Datei "phantomjs.exe" (hoffe, das ist die richtige und mit exe richtig benannt). :smirk: befindet sich im Ordner "bin" und hat diese Rechte:
    2015-11-05_105910.jpg

    Kriege jedoch immer noch diese Meldung;
    "Exec ist erlaubt , PhantomJS kann nicht ausgeführt werden. "


  • ChurchTools Mitarbeiter

    @rschi Ist das Linux/Unix System oder ein Windows-Server?

    Wenn das ein Linux-basiertes System ist (Ubuntu, Centos, Debian, ...), das ist das die falsche Datei. phantomjs.exe ist für ein Windows-System! Für Linux brauchst Du das Paket phantomjs-1.9.2-linux-x86_64... oder ...i686... , je nachdem ob für ein 64-bit Linux oder ein 32-bit Linux. Findest Du mit uname -a raus.

    Wenn das ein Windows-basiertes System ist, dann kann es aktuell noch nicht gehen, da der PDF-Export erst mit der kommenden Version 3.03 auch für Windows unterstützt wird.



  • @mhuber Vielen Dank für die Hilfe und die Geduld!
    Der Hoster gab mir zuerst an, dass es sich um ein 64bit-System handle. Als ich nochmals nachfragte, ist es nun ein 32bit-System. :-)
    Nun funktioniert es.


  • admin

    @rschi Der nahezu täglich zitierte Vers in der krausen IT-Welt:

    Kaum macht man es richtig, schon funktioniert es.

    ;)

    Klasse, dass es jetzt geht!



  • @mhuber sagte:

    @CCT: wenn nichts angezeigt wird, hat sich mein Verdacht bestätigt: Euer Hoster hat die PHP-Settings so eingerichtet, daß standardmäßig nicht erlaubt ist, aus PHP heraus Kommandos auf der Shell auszuführen (mit exec()). Da solltet Ihr mal beim Service nachfragen, ob/wo Ihr das einstellen könnt. Wahrscheinlich ist der safe_mode aktiviert. In neueren PHP-Versionen gibt es den gar nicht mehr (ab PHP 5.4.0)

    @mhuber: Unsere PHP VErsion ist > 5.4.0
    PHP Version 5.5.26
    MySQL Version 5.6.24

    Wir fragen mal beim Support des Hosters nach.



  • @mhuber:
    exec ist nur mit dem umschalten per cgi möglich. Konnte die beiden Testdateien nun auch erfolgreich ausführen. Alternativ geht auch phpx für die Testdateien.
    Jetzt möchte ich ja nicht den kompletten Server auf CGI umstellen. Welche Verzeichnisse müssen dann per htaccess umgestellt werden?

    Nur das bin Verzeichnis umgestellt führt weiterhin zu dem Fehler:
    Not Found
    The requested URL /sites/ct/files/downloader/Printview_9nZEGxdJKB.pdf was not found on this server.


  • ChurchTools Mitarbeiter

    @CCT Du mußt wahrscheinlich das Verzeichnis umstellen, in welchem die Datei liegt, welche phantomjs ausführt. Das ist system/churchcore/classes/
    Die betreffende Datei ist CTAbstractModule.class.php



  • @mhuber Das hat auch nicht zum Erfolg geführt. Ich geb's auf. Vielleicht hat mal jemand Zeit sich das selbst anzuschauen ...

    Hilft das vielleicht weiter:
    http://all-inkl.com/wichtig/anleitungen/skripte/sonstiges/per-script/shellscripte-ausfuehren_304.html


  • ChurchTools Mitarbeiter

    @CCT Gerne können wir das offline weiter verfolgen, gerne auch telefonisch. Schreib mir doch bitte kurz an support@churchtools.de, dann habe ich Deine Kontaktdaten.



  • @mhuber Habe mich gestern glaub zu früh gefreut, als ich das PDF-Symbol auf der Druckansicht sah...

    Heute wollte ich effektiv mal einen PDF-Export erstellen, bekam dann diese Meldung:
    Fehler aufgetreten: Speichere Daten....churchservice: CTException: [0]: Could not execute phantomjs, Error code: 11

    Dein Testscript gab aber aus, dass die Ausführung möglich sei.

    Was ist da wohl noch nicht so ganz richtig?


  • ChurchTools Mitarbeiter

    @rschi Das sieht für mich so aus, als ob die Phantomjs-Version nicht zu Eurem Server paßt. Poste doch bitte mal folgende Infos:

    • Was gibt das testphantomjs.php aus, wenn Du es im Browser ausführst?
    • Was gibt ein "uname -a" auf der Kommandozeile aus?
    • Was gibt ein "ls -la bin/" auf der Kommandozeile aus?
    • Was gibt ein "file bin/phantomjs" auf der Kommandozeile aus?
    • Was gibt ein "ldd bin/phantomjs" auf der Kommandozeile aus?
    • Woher hast Du das phantomjs? Aus welchem Paket/Zip/Tar-File genau (wie heißt das Paket)?

    Dann kann ich besser einschätzen, wo das Problem liegt.



  • @mhuber Also...

    • Wenn ich die testphantomjs.php ausführe, kriege ich diese Meldung:
      Exec ist erlaubt , PhantomJS Version: 1.9.2

    • Das phantomjs habe ich vom Link, welchen dur weiter oben angegeben hast (https://code.google.com/p/phantomjs/downloads/list) und davon die phantomjs-1.9.2-linux-i686.tar.bz2

    • Die Kommandos kann ich leider nicht ausführen. Habe beim Hoster nachgefragt, die sagen, ich könne das nicht, da ich keinen Zugriff habe. Und wenn sie das machen müssten, bräuchten sie genauere Infos.
      Zitat: das ist leider zu ungenau, bitte erfragen Sie dort nochmals welche Information genau sie benötigen, die Kollgen müssen Sich ja ein bestimmtes ergebnis hiervon erwaretn, bzw. bestimmte Dinge hiermit abfragen wollen

    Habe meine Seite übrigens auch bei HostEurope, wie ihr eure Hostings ja glaub auch. Vielleicht hilft das auch weiter.

    Kannst du mir evtl. sagen, welche Infos du genau brauchst, damit ich das dem Hosting-Support weiterleiten kann?

    PS: habe die 4 Fragen in der Zwischenzeit mal an den HE-Support gesendet.


  • ChurchTools Mitarbeiter

    @rschi Ich erhoffe mir von den Ausgaben der genannten Kommandos Hinweise zu bekommen, warum phantomjs mit einem Fehlercode 11 abstürzt. Error Code 11 ist üblicherweise ein SegFault, welcher auftreten kann, wenn das Programm nicht zu dem Betriebssystem paßt (weil z.B. bestimmt Bibliotheken fehlen, die zur Laufzeit benötigt werden).
    "ls" und "file" sollen testen, was denn da konkret im bin-Verzeichnis liegt - durch Deine Angabe des Paketes erübrigt sich das.
    Mit "uname -a" bekomme ich eine Aussage zum Betriebssystem und Kernel, 64 Bit vs. 32 Bit etc. => wichtig
    Mit "ldd bin/phantomjs" bekomme ich eine Übersicht aller benötigten Laufzeitbibliotheken, und ob diese alle verfügbar sind. => wichtig


  • ChurchTools Mitarbeiter



  • @mhuber Vielen Dank für den Input. Leider hat es mit dieser Version auch nicht funktioniert.
    Warte nun mal auf die Antwort vom Hosting-Support - bisher habe ich leider noch nichts gehört. Melede mich dann wieder, wenn ich mehr weiss.



  • @mhuber Leider bekam ich vom Hosting-Support negativen Bescheid:
    Die Anwendung phantomjs lässt sich auf Ihrem Produkt nicht betreiben. Da Sie sich mit mehreren Kunden den Server teilen, ist es auch nicht möglich, dass wir die genannten Befehle ausführen, da wir nicht abschätzen können ob hier ein Schaden für andere Kunden auf dem Server entstehen könnte.
    Für die Verwendung von phantomjs wäre ein Virtual Server die bessere Wahl.

    Kann zwar nicht ganz verstehen, weshalb ich die nicht betreiben kann.

    Eine andere Frage:
    Bei der Mitgliederliste hat es ja auch einen PDF-Export. Wäre das beim Ablauf nicht gleich umsetzbar, dass es die phantomjs gar nicht braucht?



  • @mhuber Habe noch nachgefragt, weshalb es nicht läuft und diese Antwort erhalten:
    Generell sollte PhantomJS auch auf einem WebHosting Gold lauffähig sein, sofern dies als statisch kompiliertes Binary für ein 32 Bit Linux vorliegt. Da wir jedoch ein stark modifiziertes Linux auf Basis eines Debian Squeeze einsetzen können wir dafür leider keinen Support leisten.

    Vielleicht kannst du damit ja was anfangen, sonst lassen wir es bleiben.



  • @mhuber Hallo, könntest Du mir bitte das Test-Tools "testexec.php" und "testphantomjs.php" in unsere DropBox stellen (Globe Mission). Zur Zeit bekomme ich ebenfalls die Fehlermeldung " Speichere Daten....churchservice: CTException: [0]: Could not execute phantomjs, Error code: 11". Wir hosten CT auf 1&1.

    Vielen Dank.



  • @mhuber Ich habe auf Probleme mit dem PDF Export. Habe das richtige binary hochgeladen. Wenn ich auf das PDF Symbol klicke, kommt Could not execute phantomjs, Error code: 11, im Wechsel mit Error Code 126.

    Im PHP Info meines Hosters sehe ich "disable_functions":
    local value: exec, system,passthru, shell_exec,popen, escapeshellcmd,proc_open, proc_nice
    Master value: exec, system,passthru, shell_exec,popen, escapeshellcmd,proc_open, proc_nice

    Ist das das Problem? Kann man das lösen? Bin leider nicht so der PHP Experte... Danke für die Antwort.


  • ChurchTools Mitarbeiter

    @daniel_h Da als "disable_functions" "exec" aufgeführt ist, kann phantomjs nicht ausgeführt werden, da hierzu exec() verwendet wird (um ein externes Programm von PHP aus aufzurufen). Dies hat der Euer Hoster deaktiviert, wahrscheinlich aus Sicherheitsgründen. Ihr könntet aber mal nachfragen, ob es eine Möglichkeit gibt, "exec" für Euer System zuzulassen.


Anmelden zum Antworten
 

Es scheint als hättest du die Verbindung zu ChurchTools Forum verloren, bitte warte während wir versuchen sie wieder aufzubauen.