[英]Imagick - ImagickException not authorized @ error/constitute.c/ReadImage/412 error
[英]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确认了此环境变量的存在)
我的系统上一些命令的输出:
我将不胜感激任何建议。
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.