ImageMagick на Ubuntu 14.04 нет делегата декодирования

В окружающей среде развития работает но не в окружающей среде продукции.

Ошибка производственной среды:

$e->getMessage():
"no decode delegate for this image format 
'/tmp/sws5725c638311df5.24370631' @ error/svg.c/ReadSVGImage/2871"

Создать tmpname:

$tmpname = '/tmp/'.uniqid('sws', true);

Метод:

public function load($filename)
  {
    try
    {
      $this->filename = $filename;
      $this->image = new Imagick($filename);
      return $this;
    }
    catch(ImagickException $e)
    {
      error_log($e->getMessage(), 3, "/tmp/log.log");
      OPException::raise(new OPInvalidImageException('Could not create jpeg with ImageMagick library'));
    }
  }

Делегаты съезда:

convert -list configure | grep DELEGATES
bzlib djvu fftw fontconfig freetype jbig jpeg jng jp2 lcms2 lqr lzma openexr pango png rsvg tiff x11 xml wmf zlib

Версии (dev и prod среды):

  • ImageMagick 6.7.7-10
  • Ubuntu 14.04
  • PHP 5.5.9-1ubuntu4.16

Есть предложения? Спасибо за внимание.

1 ответ

  1. Временный файл

    При просмотре временного файла с помощью команды vim я получил сообщение об ошибке, поступающее с сервера в формате XML, и поэтому библиотека imagick рассматривала его как файл svg.

    vim /tmp/sws5725c638311df5.24370631
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
        <Code>RequestTimeTooSkewed</Code>
        <Message>The difference between the request time and the current time is too large.</Message>
        <RequestTime>Sun, 01 May 2016 06:43:17 GMT</RequestTime>
        <ServerTime>2016-05-01T06:28:06Z</ServerTime>
        <MaxAllowedSkewMilliseconds>900000</MaxAllowedSkewMilliseconds>
        <RequestId>382A337F3660C5A9</RequestId>
        <HostId>+2RI3xW5KBd64P13x4yaWly6VdZzn1okvMAYgKvbFYlGnLp87udxpSBCVx7iQNk7zgnkK/ckUXA=</HostId>
    </Error>
    

    Решение

    Синхронизация времени операционной системы с временем сервера.

    sudo service ntp stop
    sudo ntpdate ntp.ubuntu.com
    sudo service ntp start
    

    Спасибо за комментарии.