这两天我一直在为这个问题烦恼,我忍不住认为它简单得可笑。
当尝试为 mpdf 库使用标准 jpg 图像时,出现以下图像错误...
<B>mPDF error: </B>IMAGE Error (https://www.example.net/myimage.jpg): Could not find image file
- http 和 https 我都试过了
- 我已经尝试了解决方案 here包括编辑服务器主机文件,检查权限
- 无论图片的url是什么都会出现问题(外部图片也会出现同样的问题)
- 我已确保在服务器上安装了 php gd 和 curl
- 我已通过直接复制并粘贴错误链接来反复检查以确保图片路径正确。
注意事项,
- 我在另一台服务器上工作(但它是共享主机,所以一切都已经设置好,我使用 phpinfo() 比较了两者,我能看到的唯一区别是我的 php 版本稍新。
- 我还遇到了另一个问题,因为移动网站还涉及读取 url,即使 url 是正确的,我也会收到 404 not found 错误
- 我在 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;
}
然后添加此行以在函数 _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
关于php - mpdf 图片错误,找不到图片文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197932/