首页 > 解决方案 > Ubuntu升级后Php Imagick无法正常工作

问题描述

在服务器上将 pdf 转换为图像文件但在本地系统上工作时出现错误。

我的PHP 脚本

 $img = new \Imagick();
 $image = file_get_contents($file);
 $img->readImageBlob($image);
 $response = $img->getnumberimages();

发生了错误

Unrecoverable error: typecheck in .bind
Operand stack:
    --nostringval--  typecheck  --nostringval--  currentglobal  .currentglobal

系统配置

本地系统配置

Imagick: ImageMagick 6.7.7-10 2018-09-28

Ubuntu: 14.04 LTS

PHP: PHP 7.0.32-4+ubuntu14.04.1+deb.sury.org+1

GS: 9.25

服务器系统配置

Imagick: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28

Ubuntu : 16.04.1 LTS

PHP: PHP 7.0.32-0ubuntu0.16.04.1

GS: 9.25

我试图将 Imagick 的版本恢复到 6.7 但无法恢复版本

我也尝试更改 policy.xml 文件但没有运气。

标签: phpubuntu-14.04ubuntu-16.04ghostscriptimagick

解决方案


无论如何,恢复 Image Magick 很可能对您没有任何好处,因为这是一个 Ghostscript 错误消息。

在没有看到输入文件的情况下,我无法猜测出什么问题,但如果没有,您有 2 个选择;

1) 将您的 Ghostscript 版本恢复到 9.23,然后重试。

2) 尝试从源代码构建 Ghostscript,包维护者可能做了一些原始源代码中没有的更改,并且仅在更高版本的 Ubuntu 上公开。

您也可以尝试在命令行上运行 Ghostscript,看看在这两个系统上会发生什么。您需要从 polixy.xml 获取命令行,并用正确的文件名替换各种变量。

您可以在这两个系统上进行尝试,看看会发生什么。最后,您可以比较 Ghostscript 可执行文件的二进制大小,看看它们在两个系统上是否实际上相同。如果不是,您可以将正在工作的系统从本地系统复制到您的服务器,看看是否有效。


推荐阅读