2

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

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

ImageMagick 按预期工作,例如我可以使用控制台命令将 JPG 转换为 GIF convert /my-path/file.jpg file.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 配置

4

2 回答 2

4

解决方案

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并且神奇地错误消失了。

于 2013-07-19T13:49:58.610 回答
1

我也去过,我是这样解决的:

<?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);

希望能帮助到你

于 2013-07-19T11:14:47.723 回答