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

  • lindo
    hat ein Thema erstellt TCPDF funktioniert nicht im Produktivsystem (nur lokal).

    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

  • tomBuilder
    antwortet
    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.

    Einen Kommentar schreiben:


  • lindo
    antwortet
    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

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    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

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    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 …

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    seit wann ist netz eine gültige tld ?

    Einen Kommentar schreiben:


  • jonas3344
    antwortet
    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.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    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...

    Einen Kommentar schreiben:


  • lindo
    antwortet
    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

    Einen Kommentar schreiben:


  • jonas3344
    antwortet
    Was liefert denn der Ajax-Request im Antwort-Body?

    Einen Kommentar schreiben:


  • lindo
    antwortet
    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

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X