mpdf图像错误,找不到图像文件


mpdf Image error, could not find image file

我已经用这个扯了两天了,我不禁认为它非常简单。

尝试为 mpdf 库使用标准 jpg 图像时,我收到以下图像错误...

<B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file
  1. 我已经尝试过http和https
  2. 我已经在这里尝试了解决方案,包括编辑服务器主机文件,检查权限
  3. 无论图像的网址是什么,问题都会发生(外部图像也会出现相同的问题)
  4. 我已经确保在服务器上安装了php gd和curl
  5. 我已经反复检查以确保图像路径正确,方法是直接从错误中复制和粘贴链接。

需要注意的事项,

  • 我在另一台服务器上工作(但它是共享主机,所以一切都已经设置好了,我使用 phpinfo() 比较了两者,我能看到的唯一区别是我是一个稍微新的 php 版本。
  • 自从移动网站以来,我也遇到了另一个问题,这也涉及读取网址,即使网址是正确的,我也会收到 404 未找到错误
  • 我正在使用 Windows 上的主机文件将域指向此服务器,因此它尚未上线

我设法在本地开发中解决了这个问题

我的设置如下:
视窗 10
上的 XAMPPPHP 版本 5.6.35
已启用
SSLMPD 版本 5.4

该问题与 SSL/TLS 版本不兼容有关。至于我修补了mpdf的解决方案.php

在下课前.php在 mpdf 上添加以下函数

private function _curl($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_ENCODING,"");
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT,10);
    curl_setopt($ch, CURLOPT_FAILONERROR,true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

然后添加这一行来调用函数_getImage内部的上述函数(在9283行~某行附近,我的行号可能和你的不一样)抛出错误消息之前

// patch
if (empty($data)) {
    $data = $this->_curl($file);
}
// end patch
if (!$data) { return $this->_imageError($file, $firsttime, 'Could not find image file'); }

此方法是为了防止过多地更改 mpdf 库本身。

注意:此解决方案可能不适用于所有设置!您可以参考下面的链接以了解更多信息。
参考: https://stackoverflow.com/a/42185532/209247

您也可以尝试在curl_exec之前添加以下内容,以查看错误消息是什么...

    curl_setopt($ch, CURLOPT_FAILONERROR,true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w'));