即使图片存在,HTML2PDF 也会发送错误 6“无法加载图片”

问题描述 投票:0回答:1

我使用 HTML2PDF 一段时间了,最近,我的脚本无法加载文件中的唯一图片。

// Génération du PDF
ob_start();

echo '<page>';
echo '<br/><br/><img src="https://www.xxx.fr/images/xxx.jpg" style="width:200px; float:left; margin-right:20px;" />';
// MORE HTML CODE WITHOUT ERROR
echo '</page>';
    
$content = ob_get_clean();
        
require('html2pdf/html2pdf.class.php');
try
    {
    $pdf = new HTML2PDF('P','A4','fr');
    $pdf->writeHTML($content);
    ob_end_clean();
    $pdf->Output('/home/xxx/www/images/upload/' . $data["id_client"] . '/factures/' . $fichier.'.pdf', 'F');
    }
catch(HTML2PDF_exception $e) {
    die($e);
}

除了这个错误(法语)之外,脚本工作正常:

ERREUR n°6
Fichier : /home/xxx/www/scripts/html2pdf/html2pdf.class.php
Ligne : 1319

Impossible de charger l'image https://www.xxx.fr/images/xxx.jpg

html2pdf.class.php 中的第 1319 行就是这个(我从未编辑过这个文件):

// if the image does not exist, or can not be loaded
if (count($infos)<2) {
    // if the test is activ => exception
    if ($this->_testIsImage) {
        throw new HTML2PDF_exception(6, $src);
    }
    // else, display a gray rectangle
    $src = null;
    $infos = array(16, 16);
}

我可以使用 $pdf->setTestIsImage(false); 忽略此错误(这只是用彩色 div 替换图片)或删除 IMG 行,但这并不是我真正的需要。 奇怪的是该文件存在,您可以在浏览器中检查。

StackOverFlow 上的其他主题无法帮助我,因为问题略有不同。

可能会发生什么以及如何将图片强制放入我的文件中?如果您需要更多信息,请告诉我。

编辑:这是图片的日志错误

[Mon Feb 15 13:14:57 2021] [error] [client 51.68.11.227] ModSecurity: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/usr/local/apache2/conf/modsecurity/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "65"] [id "960009"] [rev "2.1.1"] [msg "Request Missing a User Agent Header"] [severity "NOTICE"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_UA"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [hostname "www.xxx.fr"] [uri "/images/xxx.jpg"] [unique_id "YCplweC3lcgrp0C9HNJpBQAAADM"]
php html2pdf
1个回答
0
投票

我找到了一个解决方案,只需使用相对路径而不是绝对路径。 感谢@CBroe,他引导我找到了指出用户代理问题的日志。

© www.soinside.com 2019 - 2024. All rights reserved.