我已经设法使 imagemagick 工作(使用其网站上的命令行示例进行测试)
并且看来 php 扩展已正确安装:我可以在我的phpinfo();
列表中看到它。
但是,当我尝试运行以下代码时:
$im = new imagick( 'examples.jpg' );
$im->thumbnailImage( 200, 0);
$im->writeImage( 'a_thumbnail.jpg' );
执行在第二行停止,因为它找不到 thumbnailImage 方法。
我能想到的是,有些用户没有足够的权限来访问/运行其他东西,但我显然不能授予用户访问所有内容的权限。
另一种可能性是,我使用的 PHP 扩展不适合最新的 imagemagick 发行版。
答案1
我已使用以下文章在装有 IIS 7.5 的 Windows 7 计算机上安装了 Image Magic,并且运行正常。我建议检查一下:
http://gary-greendale.blogspot.com/2011/01/install-php-imagemagick-and-imagick-for.html
答案2
我遇到过同样的问题。查看用于编译 a) ImageMagick、b) php_imagick.dll、c) php 的 Visual Studio 版本,并查看 php 的线程安全标志。Visual Studio 版本必须相同。此队列和此场景中最重要的是用于编译 ImageMagick 的 VS 版本。他们将 VS-C++ 运行时 dll 放在 ImageMagick 安装目录中。它们名为 msvcr[71|90|100].dll 和 msvcp[71|90|100].dll。
我的测试是:
- 在命令行上运行“convert logo: logo.gif”
- 在命令行上运行“imdisplay logo.gif”(由于 VS2010 和 ImageMagick 问题,它在最新的 ImageMagick 版本中失败(http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=17303&&http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=17720)) --> 将 ImageMagick 降级至 6.5.9 (http://image_magick.veidrodis.com/image_magick/binaries/)
- 通过命令行运行你的 php 脚本 (/path/to/php.exe /path/to/php-script.php > /path/to/output.jpg)(如果 VS 版本不匹配,则会失败)(对我来说,php 来自(http://valokuva.org/?page_id=50)并且 ImageMagick 6.5.9 可以工作)
- 通过你的网络服务器和浏览器运行 php 脚本
- 提高 php 中的 error_level(如果 temp-folder-write-permission 不正确,php_imagick 会引发错误)--> 更正它们(允许 webserver-system-user 写入)
- 再次测试步骤 4
- php_imagick 在 iis 上运行
答案3
这可能与 PHP 在安全模式下运行有关。
http://www.imagemagick.org/discourse-server/viewtopic.php?f=10&t=13055
http://www.theukwebdesigncompany.com/articles/php-imagemagick.php
引用: 如果您的服务器在安全模式下运行 PHP(如果您使用的是(免费)共享主机,则很可能是这种情况),那么您的脚本将无权执行 shell 命令。由于此脚本将 ImageMagick 作为 shell 命令运行,因此您将无法使用它。您可以 a. 要求您的托管服务提供商禁用安全模式或 b. 使用 GD 库来生成图像。ImageMagick 比 GD 库强大得多,但即使在安全模式下您也可以使用后者。