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

时间:2015-01-28 16:54:59

标签: php image mpdf

我已经用这两天撕掉我的头发了两天,我不能帮助它,但我觉得它有些荒谬可笑。

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

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

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

1 个答案:

答案 0 :(得分:0)

我设法解决本地开发问题

我的设置如下:
Windows 10上的XAMPP
php版本 5.6.35
已启用ssl
mpdf版本 5.4

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

在课程结束之前在mpdf.php上添加以下功能

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