我已经用这个扯了两天了,我不禁认为它非常简单。
尝试为 mpdf 库使用标准 jpg 图像时,我收到以下图像错误...
<B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file
- 我已经尝试过http和https
- 我已经在这里尝试了解决方案,包括编辑服务器主机文件,检查权限
- 无论图像的网址是什么,问题都会发生(外部图像也会出现相同的问题)
- 我已经确保在服务器上安装了php gd和curl
- 我已经反复检查以确保图像路径正确,方法是直接从错误中复制和粘贴链接。
需要注意的事项,
- 我在另一台服务器上工作(但它是共享主机,所以一切都已经设置好了,我使用 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'));