繁体   English   中英

OSX上的PHP-Imagick,ImagickException:NoDecodeDelegateForThisImageFormat`/my-path/file.jpg'@ error / constitute.c / ReadImage / 550

[英]PHP-Imagick on OSX, ImagickException: NoDecodeDelegateForThisImageFormat `/my-path/file.jpg' @ error/constitute.c/ReadImage/550

我的环境是:MacOSX 10.8.3,PHP 5.3.17,ImageMagick 6.8.0,Apache 2.2.22

我已经使用macports安装了ImageMagick和PHP-Imagick模块。

ImageMagick可以正常工作,例如,我可以使用控制台命令convert /my-path/file.jpg file.gif将JPG转换为GIF。

但是,当我通过使用示例代码创建新的Imagick实例时,如下所示:

<?php
  $m = new Imagick('/my-path/file.jpg');

我得到例外:

NoDecodeDelegateForThisImageFormat`/my-path/file.jpg'@ error / constitute.c / ReadImage / 550

文件的格式不会改变结果。 我测试了不同的JPG,GIF和PNG图像,但是发生了相同的异常。

因此,我怀疑PHP / Apache-ImageMagick集成部分有些错误。

在SO上看到了这篇文章,并应用了给定的分辨率(将环境变量“ MAGICKCODERMODULE_PATH”添加为值“ /opt/local/lib/ImageMagick-6.8.0/modules-Q16/coders”),但这没有任何意义。就我而言 (我从phpinfo确认了此环境变量的存在)

我的系统上一些命令的输出:

我将不胜感激任何建议。

Apache配置,环境和PHPImagick配置

chmod 755 /选择

见解与思想

最后。 我设法解决了这个问题。

由于没有关于SO的答案和建议; 我不感到意外的原因引起了!

@sathia建议定义一个环境变量来调用ImageMagick二进制文件。 但是,就我而言,我需要使用phpImagick扩展名并通过其API访问ImageMagick,因此此建议没有任何意义。

但是我想尝试一下,并使用PHP的system函数调用ImageMagick的转换二进制文件。 调用它后,我得到一个返回值“ 126”。 和126表示找到了二进制文件,但是它不是可执行文件 !..

我检查了/ opt / local / bin / convert中的二进制文件,它具有适当的执行权限,然后检查了/ opt / local / bin和/ opt / local目录,它们也是可执行的。 但是要注意的是/opt文件夹的权限是700!

我设法执行chmod 755 /opt ,魔术错误消失了。

我也去过那里,这就是我解决的方法:

<?php    

    define("IMAGE_MAGICK_PATH","/usr/local/bin/");
    $in = '/my-path/file.jpg';
    $out = '/my-path/file.gif';
    $convertString = IMAGE_MAGICK_PATH." convert ".$yourfile." ".$out;
    exec($convertString);

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM