mPDF не отображает изображения (ошибка mPDF: ошибка IMAGE Не удалось найти файл изображения)

Мы страдаем от этого, который начался в апреле на работающем сервере. С нашим приложением все было в порядке, пока клиент не сообщил, что в PDF больше не отображаются изображения.

Наш PDF сначала генерируется с помощью HTML-рендера. Когда отображается HTML-рендер, изображение отображается правильно. Также изображение правильно показывает, скопирован ли URL-адрес изображения, указанный в mPDF, и вставлен в новую вкладку.

Однако... Если мы загружаем изображение из РАЗНОГО ДОМЕНА, то изображение отображается правильно. загрузка изображения через абсолютный путь, относительный путь или путь URL приводит к этой ошибке:

Ошибка mPDF: ошибка IMAGE ( http://www.aibsonline.co.uk/logo.gif): не удалось найти файл изображения

Но, как вы увидите, URL-адрес логотипа работает при вставке. Права доступа к файлам были протестированы (поэтому они находятся в корне) как стандартные и до 777. Сервер - это сервер Linux в обоих случаях, которые мы видели до сих пор.

HTML-код, который отображает логотип:

<div id="logo_wrapper" class="left">
<img width="107" height="76" src="<?php echo base_url('logo.gif'); ?>" />
</div>

На самом деле с этим один, и это начинает влиять на все больше и больше клиентов.

Любая помощь с благодарностью получена.

ОБНОВИТЬ

Изображение отображается, если код рендеринга и изображение находятся в одном каталоге, и мы НЕ используем абсолютный путь, например.

<img width="107" height="76" src="logo.gif" />

7 ответов

Я столкнулся с этой проблемой сегодня. Моя проблема заключалась в том, что имя домена, которое я использовал, не разрешалось обратно на сервер при доступе с сервера. Я добавил запись в файл hosts на сервере, и изображения начали показываться.

Ваша эквивалентная запись файла hosts о том, что исправило бы мою проблему:

127.0.0.1 www.aibsonline.co.uk

Или иначе убедитесь, что www.aibsonline.co.uk разрешается на ваш сервер в DNS, который использует ваш сервер.

Похоже, что mPDF обращается к изображениям как веб-клиент cURL, поэтому DNS на сервере должен быть правильно настроен для обращения к себе.

У меня была похожая проблема, и я решил следующее:

1.Проверьте, установлена ​​ли библиотека gd и включите ли вы в свой php ini файл. Если не установить библиотеку GD.

2.Включить переменную отладки.

$mpdf = new mPDF();    
$mpdf->showImageErrors = true;

3. Попробуйте изменить абсолютный / относительный путь для изображения

<img src="http://someDomain/directory/image.jpg">
<img src="./directory/image.jpg">

Надеюсь это поможет.

Я попробовал все другие ответы здесь, но для меня, только добавив

$mpdf->curlAllowUnsafeSslRequests = true;

исправил проблему.

С той же проблемой я обнаружил, что get_headers() возвращает:

"HTTP/1.1 412 Precondition Failed"

Поставщик говорит, что это произошло из-за сетевого брандмауэра, потому что запрос был сформирован неправильно, а user_agent не установлен.

ini_set('user_agent', 'Mozilla/5.0'); решил проблему.

В плагине WordPress, использующем mpdf, mpdf не использует http-классы WordPress и не устанавливает user_agent. Я решил это, добавив в mu-плагины:

global $wp_version;

ini_set('user_agent',apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ));

Я столкнулся с той же проблемой. mPDF выполнял DOG SLOW и в результате вывел сообщение об ошибке "Не удается найти файл изображения". После

  1. проверка, чтобы убедиться, что изображение на самом деле там
  2. проверка прав доступа к файлу
  3. проверка всех журналов ошибок на сервере
  4. прочесывая документацию по mPDF

Я обнаружил, что рассматриваемый файл изображения как-то поврежден. Я загрузил изображение на свой локальный компьютер, открыл его с помощью редактора изображений (в данном случае Paint.NET), заново сохранил его в виде файла.gif и снова загрузил на сервер. Это, казалось, исправило это. Ваш пробег может варьироваться.

Кроме того, для чего он стоит, мне пришлось использовать images/image.gif вместо пути к файлу /images/image.gif,

Просто убедитесь, что в вашем файле класса PDF есть функции, связанные с изображениями. Как parsejpg, parsepng, parsegif и т. Д.

У меня есть защищенный паролем сервер (.htaccess / .passwd), и после некоторых исследований я понимаю, что mPDF использует HTTP для получения изображений, но сервер блокирует изображения от публики из-за защиты паролем. После снятия защиты паролем у меня возникла проблема с сертификатом ssl, и я включаю запросы usafe, и он начинает работать

       $mpdf->curlAllowUnsafeSslRequests = true;  

Также вы всегда можете включить режимы отладки и следить за сообщениями об ошибках.

      $mpdf->showImageErrors = true;
$mpdf->debug = true;
Другие вопросы по тегам