Ubuntu 14.04 上的 ImageMagick 无解码委托
ImageMagick on Ubuntu 14.04 No decode delegate
在开发环境中有效,但在生产环境中无效。
生产环境错误:
$e->getMessage():
"no decode delegate for this image format
'/tmp/sws5725c638311df5.24370631' @ error/svg.c/ReadSVGImage/2871"
生成 tmp 名称:
$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
版本(开发和生产环境):
- ImageMagick 6.7.7-10
- Ubuntu 14.04
- PHP 5.5.9-1ubuntu4.16
有什么建议吗?感谢您的关注。
临时文件
在使用命令 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
感谢评论。
在开发环境中有效,但在生产环境中无效。
生产环境错误:
$e->getMessage():
"no decode delegate for this image format
'/tmp/sws5725c638311df5.24370631' @ error/svg.c/ReadSVGImage/2871"
生成 tmp 名称:
$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
版本(开发和生产环境):
- ImageMagick 6.7.7-10
- Ubuntu 14.04
- PHP 5.5.9-1ubuntu4.16
有什么建议吗?感谢您的关注。
临时文件
在使用命令 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
感谢评论。