首页 文章

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

提问于
浏览
3

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

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

<B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file
  • 我试过http和https

  • 我尝试过解决方案here,包括编辑服务器主机文件,检查权限

  • 无论图像的网址是什么,问题都会发生(外部图像也会出现同样的问题)

  • 我确保在服务器上安装了php gd和curl

  • 我通过直接从错误中复制并粘贴链接来反复检查以确保图像路径正确 .

注意事项,

  • 我有这个在另一台服务器上工作(但它是共享托管所以一切都已经设置,我已经比较了两个使用phpinfo()和唯一的区别,我可以看到是一个稍微更新的PHP版本 .

  • 我也有另一个问题,因为移动网站也涉及阅读网址,我收到404找不到错误,即使网址是正确的

  • 我在Windows上使用我的hosts文件将域指向此服务器,因此它尚未生效

1 回答

  • 0

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

    我的设置如下:
    XAMPP on windows 10
    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

相关问题