Ankündigung

Einklappen
Keine Ankündigung bisher.

TCPDF funktioniert nicht im Produktivsystem (nur lokal)

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • TCPDF funktioniert nicht im Produktivsystem (nur lokal)

    Hallo Forum,

    ich habe ein Problem mit TCPDF, welches nur auf meinem lokalen Mac PDF schreibt - auf dem Produktivsystem (Intranet) erfolgt keine Ausgabe der PDF. Ich nutze folgende Systeme:

    Lokal: macOS 10.14.5 mit Apache2/PHP7 & Co. durch Homebrew
    Intranet: Ubuntu Linux 18.04.2 ebenfalls mit Apache2/PHP7 & Co.

    Ich bekomme auch keine Fehlermeldung im Error.log oder im Browser. Die Apache2-Config und die PHP.ini Konfiguration habe ich abgeglichen, dort finde ich keine relevanten Unterschiede zwischen lokal und Intranet - lasse mich aber gerne eines besseren belehren. Der User www-data hat Schreibrechte auf den Ausgabeordner, ich habe sogar übergangsweise mal "chmod 777" auf den Ordner ausgeführt.

    Im Network-Inspektor von Chrome sehe ich auch, dass der Ajax Aufruf erfolgreich ist (Status 200) allerdings rauscht er förmlich durch, auf dem lokalen System dauert es länger, weil ja ein PDF geschrieben wird. Nun mal zum Code:

    HTML:
    HTML-Code:
    <a href="" onclick="getTotalMarketplaceInvoicePaper('26_2019', 1)">Gesamtrechnung</a>
    JS:
    PHP-Code:
    function getTotalMarketplaceInvoicePaper(kwbakeoff) {
        $.
    ajax({
            
    url'gettotalmarketplaceinvoicepaper',
            
    data: {
                
    kwkw,
                
    bakeoffbakeoff
            
    },
            
    type'post',
            
    success: function () {
                if (
    bakeoff != 1) {
                   
    window.open('../data/marketplace_' kw '_GRE.pdf''_blank');
                } else {
                   
    window.open('../data/marketplace_bakeoff_' kw '_GRE.pdf''_blank');
                }
            }
        });

    Controller:
    PHP-Code:
    public function gettotalmarketplaceinvoicepaper()
    {
        
    Model::getTotalMarketplaceInvoicePaper($_POST);

    Model:
    PHP-Code:
    public static function getTotalMarketplaceInvoicePaper($post)
        {
            
    $database DatabaseFactory::getFactory()->getConnection();

            
    $kw $post['kw'];
            
    $bakeoff $post['bakeoff'];

            
    //[SQL uvm. ...]

            
    $string '...';

            if (
    $bakeoff != 1) {
                
    SELF::generatePDF('marketplace_' $kw '_GRE.pdf'$string);
            } else {
                
    SELF::generatePDF('marketplace_bakeoff_' $kw '_GRE.pdf'$string);
            }
        }

        public
        static function 
    generatePDF($filename$content)
        {
            require_once(
    $_SERVER['DOCUMENT_ROOT'] . '/../plugins/tcpdf/tcpdf.php');

            
    $pdf = new TCPDF(PDF_PAGE_ORIENTATIONPDF_UNITPDF_PAGE_FORMATtrue'UTF-8'false);

            
    $pdf->SetCreator(PDF_CREATOR);
            
    $pdf->SetAuthor('...');
            
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN''PDF_FONT_SIZE_MAIN));
            
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
            
    $pdf->SetMargins(272020true);
            
    $pdf->SetFont('helvetica'''11);
            
    $pdf->SetPageMark();
            
    $pdf->SetPrintHeader(false);
            
    $pdf->SetPrintFooter(false);
            
    $pdf->SetImageScale(1.0);
            
    $pdf->AddPage();
            
    $pdf->SetAutoPageBreak(false0);
            
    $img_file $_SERVER['DOCUMENT_ROOT'] . 'img/head.png';
            
    $pdf->Image($img_file00210297''''''false300''falsefalse0);
            
    $pdf->SetAutoPageBreak(true40);
            
    $pdf->writeHTML($contenttruetruetruetrue'');
            
    $pdf->lastPage();

            
    $file $_SERVER['DOCUMENT_ROOT'] . 'data/' $filename;

            if (
    file_exists($file)) {
                
    unlink($file);
            }

            
    $pdf->Output($file'F');
        } 
    Wie im JS vorgegeben versucht das Produktivsystem erfolglos die PDF Datei zu öffnen. Error 404... Bin für jede Hilfe dankbar.

    LG Dominik


  • #2
    Wie im JS vorgegeben versucht das Produktivsystem erfolglos die PDF Datei zu öffnen. Error 404... Bin für jede Hilfe dankbar.
    Code:
    window.open('../data/marketplace_' + kw + '_GRE.pdf', '_blank');
    https://developer.mozilla.org/en-US/...PI/Window/open

    Kommentar


    • #3
      Hallo Tom,

      meine Aussage muss ich erweitern, unabhängig von der Art und Weise wie ich das PDF öffnen möchte -> Die PDF-Datei ist definitiv nicht vorhanden...

      Gruss

      Kommentar


      • #4
        Was liefert denn der Ajax-Request im Antwort-Body?

        Kommentar


        • #5
          Bildschirmfoto 2019-07-04 um 09.17.23.png

          Unter Response steht: "Failed to load response data", allerdings steht selbiges auch bei den erfolgreichen Versuchen lokal unter Response...

          Gruss

          Kommentar


          • #6
            Zitat von lindo Beitrag anzeigen
            Hallo Tom,

            meine Aussage muss ich erweitern, unabhängig von der Art und Weise wie ich das PDF öffnen möchte -> Die PDF-Datei ist definitiv nicht vorhanden...

            Gruss
            Ich muss wohl die selbe frage nochmals stellen,
            welche datei, oder wo vermutest Du die datei, oder

            poste doch mal die url die 404 ausgibt.

            zudem ich kann auf der grafik wenig lesen, aber muss remote adress privat sein?
            bei mir gibts nur angefragte adresse, und die ist public.

            in zukunft:

            keine screenshots sondern text solcher informationen
            sowas nicht unter fortgeschritten
            fraglich ob das ein php problem ist...

            Kommentar


            • #7
              HTML-Code:
              http://intranet3.dsfhkjadf.netz/data/marketplace_bakeoff_26_2019_GRE.pdf
              Die Datei liegt im "DocumentRoot/data" - sollte sie zumindest

              Kommentar


              • #8
                Ich vermute du hast ein Problem mit deinen Dateipfaden.
                Das hier:
                PHP-Code:
                $file $_SERVER['DOCUMENT_ROOT'] . 'data/' $filename
                kann auch auf dem Entwicklungssystem nichts sinnvolles liefern. $_SERVER['DOCUMENT_ROOT'] kommt bei mir immer ohne "/" am Ende.
                Auf Globale Variablen in einer Klasse zuzugreifen ist auch kein guter Stil.
                PHP-Klassen auf github

                Kommentar


                • #9
                  Wenn das Ding lokal läuft, produktiv nicht musst du halt versuchen das Script dort mit Ausgaben zu debuggen. Entfern $pdf->Output($file, 'F'); und lass Dir mal $file ausgeben und schau das in der Response an.

                  Kommentar


                  • #10
                    seit wann ist netz eine gültige tld ?

                    Kommentar


                    • #11
                      Zitat von lindo Beitrag anzeigen
                      HTML-Code:
                      <a href="" onclick="getTotalMarketplaceInvoicePaper('26_2019', 1)">Gesamtrechnung</a>
                      Du solltest erstmal jegliches Javascript entfernen und die URL die die PDF-Datei erzeugt direkt aufrufen um potentielle Fehlerquellen auszuschließen. Zudem wäre dann als zweiter Parameter von Output ein 'I' ganz hilfreich um die PDF-Datei direkt an den Browser auszugeben.

                      Zitat von tomBuilder Beitrag anzeigen
                      seit wann ist netz eine gültige tld ?
                      Sinnvoll ist natürlich was anderes, aber prinzipiell kannst du lokale Domains benennen wie du willst …

                      Kommentar


                      • #12
                        Zitat von tk1234 Beitrag anzeigen
                        Sinnvoll ist natürlich was anderes, aber prinzipiell kannst du lokale Domains benennen wie du willst …
                        zu der schreib kommt auch noch ne leseschwäche ...
                        hatte internet gelesen, nicht intranet

                        Kommentar


                        • #13
                          Hallo zusammen,

                          die Slashes nach "$_SERVER['DOCUMENT_ROOT']" habe ich ergänzt, jedoch hat mich das auch nicht weitergebracht. Nun habe ich die Dateien wieder auf den alten Intranet3-ProduktionsServer umgezogen, wo alles prompt funktioniert. Also schließe ich mal eine PHP-Problem aus, insbesondere weil dort identische Versionen von Apache2 und PHP laufen. Jedoch kann ich aktuell nicht sagen, an welchem Konfig-Fehler es nun gelegen hat.

                          Ich danke Euch für den Support

                          LG Dominik

                          Kommentar


                          • #14
                            PHP-Code:
                             $pdf->Output($file'S'); 
                            Hast Du sicher auch versucht, sowie an jeder unmöglichen und möglichen stelle alles was auch nur im entferntesten interessant sein könnte ausgeben zu lassen.

                            Kommentar

                            Lädt...
                            X