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

Php mpdf图像错误,找不到图像文件,php,image,mpdf,Php,Image,Mpdf,这两天来,我一直在为这件事焦头烂额,我忍不住觉得这件事简单得可笑 当我尝试为mpdf库使用标准jpg图像时,我得到以下图像错误 <B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file mPDF错误:图像错误(https://www.example.net/myimage.jpg):找不到图像文件 我尝试了http和https 我尝试了

这两天来,我一直在为这件事焦头烂额,我忍不住觉得这件事简单得可笑

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

<B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file
mPDF错误:图像错误(https://www.example.net/myimage.jpg):找不到图像文件
  • 我尝试了http和https
  • 我尝试了包括编辑服务器主机文件、检查权限在内的解决方案
  • 无论图像的url是什么,都会出现问题(外部图像也会出现同样的问题)
  • 我已经确保在服务器上安装了phpgd和curl
  • 我反复检查,以确保图像路径是正确的,直接复制和粘贴错误的链接
  • 值得注意的是

    • 我在另一台服务器上使用了它(但它是共享主机,所以一切都已经设置好了),我使用phpinfo()比较了两者,我能看到的唯一区别是,我使用了一个稍新的php版本
    • 我也有另一个问题,因为移动的网站也涉及阅读网址,我得到了404未找到错误,即使网址是正确的网址
    • 我正在Windows上使用我的主机文件将域指向此服务器,因此它尚未处于活动状态

    我设法解决了当地发展的这个问题

    我的设置如下:
    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;
    }
    
    然后添加这一行以调用函数\u 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库本身进行过多修改

    注意:此解决方案可能不适用于所有安装!您可以参考下面的链接了解更多信息。

    Ref:

    我最近在curl和mpdf上遇到了同样的问题,这是主机的问题-您已经提到过。因此,如果有其他方法可以尝试这方面的其他方法-我建议这样做。我在这里也找到了类似的答案,我从未真正解决过这个问题,但我在正确的位置上设置了一个副本开发站点ame服务器有自己的真实实时url,它工作得非常好,因此它肯定与主机文件相关,而不是服务器设置问题。但是,由于所有的更改和混乱,我试图在服务器上和本地处理主机文件,但无法使其在“实时”上工作我冒了风险,更改了A记录,并简单地使其真实存在(知道这不是php或服务器设置问题),它成功了。可能是