Bei der Arbeit mit dompdf kann es passieren, zum Beispiel nach dem Umzug auf ein eher restriktives Webhosting, dass Bilder aus externen Quellen (remote sources) in generierten PDF-Dateien nicht mehr angezeigt werden.
Der Fehler wird auf dem PDF selbst mit der Meldung
Image not readable or empty
quittiert. Darunter ist ein Link zum Bild, welcher bei direktem Aufruf allerdings funktioniert.
Im PHP-Errorlog erscheint die folgende Meldung:
Filename cannot be empty in image_cache.cls.php on line 104
Das legt nahe, dass die Variable, welche den Link zur Datei im Remote-Cache enthält, nicht gefüllt ist. Die Variable sollte beginnen mit dem temporären Verzeichnis der PHP-Installation.
Im Normalfall wird der Anfang der Variable, also der Pfad des temporären Verzeichnisses, mit der Funktion „sys_get_temp_dir()“ in der folgenden Zeile der dompdf-Konfiguration (dompdf_config.inc.php oder dompdf_config.custom.inc.php) geholt.
def(„DOMPDF_TEMP_DIR“, sys_get_temp_dir());
Funktioniert diese Funktion nicht oder falsch, kommt kein oder ein falscher String zurück und das Bild kann nicht in das PDF eingebunden werden.
Abhilfe schafft im Idealfall das manuelle Eintragen eines temporären Pfades. Dazu die Gänsefüßchen nicht vergessen. Am Ende könnte die Zeile so aussehen:
def(„DOMPDF_TEMP_DIR“, „/var/www/website.de/tmp“);
Dabei wird davon ausgegangen, dass die Seite beispielsweise unter /var/www/website.de/htdocs o. ä. liegt und das tmp-Verzeichnis durch den Webserver schreib- und lesbar ist (wichtig).