php - 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 文件但没有运气。
解决方案
无论如何,恢复 Image Magick 很可能对您没有任何好处,因为这是一个 Ghostscript 错误消息。
在没有看到输入文件的情况下,我无法猜测出什么问题,但如果没有,您有 2 个选择;
1) 将您的 Ghostscript 版本恢复到 9.23,然后重试。
2) 尝试从源代码构建 Ghostscript,包维护者可能做了一些原始源代码中没有的更改,并且仅在更高版本的 Ubuntu 上公开。
您也可以尝试在命令行上运行 Ghostscript,看看在这两个系统上会发生什么。您需要从 polixy.xml 获取命令行,并用正确的文件名替换各种变量。
您可以在这两个系统上进行尝试,看看会发生什么。最后,您可以比较 Ghostscript 可执行文件的二进制大小,看看它们在两个系统上是否实际上相同。如果不是,您可以将正在工作的系统从本地系统复制到您的服务器,看看是否有效。
推荐阅读
- javascript - Node.js 跳过函数
- php - 检查匹配并排序数组
- angular - 角度模板检查返回错误对象可能为空
- angular - 根据 http 响应值 angular 动态显示字体真棒图标
- php - 如何使 PHP 变量返回文本而不是任何内容
- amazon-web-services - 通过 AWS lambda 查询和更新 Redshift
- python - 如何通过列的近似值组合/合并数据框?
- python - ResNet,在 Google Colab 中使用 decode_predictions 时访问了错误的数据
- php - PHP INCLUDE 后不显示 HTML
- c# - 是否可以让 tesseract ocr 直接读取屏幕?