php - mpdf 图片错误,找不到图片文件

标签 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. 无论图片的url是什么都会出现问题(外部图片也会出现同样的问题)
  4. 我已确保在服务器上安装了 php gd 和 curl
  5. 我已通过直接复制并粘贴错误链接来反复检查以确保图片路径正确。

注意事项,

  • 我在另一台服务器上工作(但它是共享主机,所以一切都已经设置好,我使用 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/

相关文章:

Java FlowLayout 确实把我的图片画得很小

php - 在 mpdf 中并排显示 div

php - mpdf 仅应用某些样式

php - 如何获得 if 条件下得到的值的总和

php - 使用 PHP 通过 ODBC 运行 MSSQL 存储过程(并返回结果)

php - 如果不存在则导入表数据的功能

php - 如何中心对齐来自数据库的 'n' 图像数量

php - 设置快捷方式以替换 VIM 中轻松选择的字符串

html - 根据屏幕尺寸使用不同的图像以提高性能/加载时间? (网页设计)

php - 使用 mPDF 更改第二页的上边距