Hallo,
ich weiß nicht, ob das hier das richtige Forum dafür ist, aber ich habe ein blödes Problem bei TCPDF und Contao 4.4. Ich habe in einer PDF ein Bild eingebunden, das funktioniert mittels
PHP-Code:
$this->Image($strLogoSrc, $x=22, $y=12, $w=85, $h='', '', '', '', false, 300, '', false, false, 0);
Das funktionierte bis Contao 4.4.26 ohne Probleme. Durch ein Upgrade auf Contao 4.4.46 löscht mir das TCPDF Script einfach das Bild vom Server.
Im genaueren lag es daran: Updating tecnickcom/tcpdf (6.2.25 => 6.3.2): Downloading (100%)
Ich konnte das Problem sehr gut eingrenzen und die folgenden Zeilen sind dafür verantwortlich:
https://github.com/tecnickcom/TCPDF/...cpdf.php#L7785
Zeile 7785 bis 7804
Achtung... das lädt ewig. Ich weiß auch nicht wie man so clever sein kann und Dateien mit über 10.000 Zeilen Code zu verzapfen, aber egal...
Dieser Entwickler tecnickcom hat einfach diesen nicht so cleveren Quatsch rein programmiert ála destroy. Ich hab keine Ahnung was das bringen soll und ob das nur im Zusammenhang mit Contao passiert. Aber es ist echt blöd.
Das betrifft quasi die Datei \vendor\tecnickcom\tcpdf\tcpdf.php
Ich habe diese Zeile
PHP-Code:
if (isset(self::$cleaned_ids[$this->file_id])) { $destroyall = false; } if ($destroyall AND !$preserve_objcopy) { self::$cleaned_ids[$this->file_id] = true; // remove all temporary files if ($handle = opendir(K_PATH_CACHE)) { while ( false !== ( $file_name = readdir( $handle ) ) ) { if (strpos($file_name, '__tcpdf_'.$this->file_id.'_') === 0) { unlink(K_PATH_CACHE.$file_name); } } closedir($handle); } if (isset($this->imagekeys)) { foreach($this->imagekeys as $file) { unlink($file); } } }
Durch diese ersetzt (alter Stand):
PHP-Code:
if ($destroyall AND !$preserve_objcopy) { // remove all temporary files $tmpfiles = glob(K_PATH_CACHE.'__tcpdf_'.$this->file_id.'_*'); if (!empty($tmpfiles)) { array_map('unlink', $tmpfiles); } }
Das kann man natürlich Hardcore hardcoded machen, aber dann ist man natürlich auf dem update unsicheren Pfad unterwegs. Kann Contao vielleicht einfach so vorgehen, dass wieder die alte Version aktiviert wird oder kriegt man das irgendwie updatesicher kompatibel? Ich habe keine Ahnung an wen ich mich wenden soll. Den Entwickler kriegt man ja bestimmt nicht kontaktiert und selbst wenn hat der Typ doch bestimmt keine Ahnung davon was Contao überhaupt ist?