exception 'DOMPDF_Exception' with message 'No block-level parent found. Not good.

Introducción

Algunas veces con cambios entre servidores o proveedores de hosting, las aplicaciones de nuestros clientes, sufren ciertos descalabros, como por ejemplo el mostrar una página en blanco en lugar de renderizar un documento PDF.

Como norma general pensaremos en que hay un problema de nuestro servidor o hosting, en el que falta tal o cual extensión.

Craso error. Lo primero es lo primero. Hay que ver los logs.

Análisis

Podemos acceder vía SSH a nuestra shell o en su defecto via cPanel Acceso shell via cPAnel

Como podemos ver el error es claro:

[14-Jul-2021 05:49:24 UTC] Error al generar certificado : exception 'DOMPDF_Exception' with message 'No block-level parent found.  Not good.' in /home/dentista/public_html/dompdf/include/inline_positioner.cls.php:38
Stack trace:
#0 /home/dentista/public_html/dompdf/include/frame_decorator.cls.php(546): Inline_Positioner->position()
#1 /home/dentista/public_html/dompdf/include/text_frame_reflower.cls.php(331): Frame_Decorator->position()
#2 /home/dentista/public_html/dompdf/include/frame_decorator.cls.php(556): Text_Frame_Reflower->reflow(NULL)
#3 /home/dentista/public_html/dompdf/include/page_frame_reflower.cls.php(138): Frame_Decorator->reflow()
#4 /home/dentista/public_html/dompdf/include/frame_decorator.cls.php(556): Page_Frame_Reflower->reflow(NULL)
#5 /home/dentista/public_html/dompdf/include/dompdf.cls.php(817): Frame_Decorator->reflow()
#6 /home/dentista/public_html/pdfCerMaster.php(125): DOMPDF->render()
#7 {main}
Si nuestro proveedor usa PHP-FPM, los logs estarán en la carpeta `~/logs` con el formato `dominio_tld.php.error.log` 
Otros escenarios como fcgi, suPHP, etc, variarán según la configuración que el administrador haya impuesto por defecto o de manera personalizada

Este error no tiene nada que ver con la existencia o no de determinada extensión, sino con un error de en el analizador (parsing) de HTML5.

Corrección

Debemos localizar el fichero de configuración que defina la variable DOMPDF_ENABLE_HTML5PARSER o en su defecto si nuestra app no la tiene acudiremos a la de la propia librería.

Buscamos el posible fichero

$ find . -type f -exec grep -il "DOMPDF_ENABLE_HTML5PARSER" {} \;
./dompdf/include/dompdf.cls.php
./dompdf/changelog.txt
./dompdf/dompdf_config.custom.inc.php
./dompdf/dompdf_config.inc.php
./lib/dompdf/include/dompdf.cls.php
./lib/dompdf/www/setup.php
./lib/dompdf/changelog.txt
./lib/dompdf/dompdf_config.custom.inc.php
./lib/dompdf/dompdf_config.inc.php

Por los nombres me acerco a pensar en ./dompdf/dompdf_config.inc.php el cual paso a editar:

define("DOMPDF_ENABLE_HTML5PARSER", true);

Esto puede que funcione o no, pero al menos, me mostrará los errores de las etiquetas de HTML de una forma más adecuada.

Enlaces

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.


Revision #2
Created 14 July 2021 06:26:42 by Abkrim
Updated 14 July 2021 06:27:34 by Abkrim