读取PDF时出现ImagickException: Zero size image string passed错误如何解决?
报错原因与解决方案
报错详情:ImagickException: Zero size image string passed in /home/289812.cloudwaysapps.com/eeyqmgqped/public_html/online/mod/securepdf/view.php:98 Stack trace: #0 /home/289812.cloudwaysapps.com/eeyqmgqped/public_html/online/mod/securepdf/view.php(98): Imagick->readImageBlob() #1 {main}
这个报错是ImageMagick默认禁止读取PDF格式文件导致的,可按以下步骤修复:
- 找到ImageMagick的策略配置文件
policy.xml,常规路径为/etc/ImageMagick-<版本号>/policy.xml,不同服务器环境路径可能略有差异 - 打开配置文件,找到默认的PDF权限规则:
<policy domain="coder" rights="none" pattern="PDF" />
将rights属性值修改为read(如果需要写入权限可改为read|write),修改后内容如下:
<policy domain="coder" rights="read" pattern="PDF" />
- 保存配置文件后,重启对应服务生效,根据你的运行环境重启Web服务(Apache/Nginx)或者PHP-FPM服务即可。
其他异常排查
如果修改后还是报错,可逐一检查以下项:
- 确认传入
readImageBlob方法的PDF内容本身不为空,可先打印传入的二进制内容长度做校验 - 确认服务器已安装PDF处理依赖Ghostscript,执行
gs --version能正常输出版本号即为安装成功 - 确认PHP的imagick扩展已正常加载,执行
php -m | grep imagick能看到imagick即为加载正常
内容的提问来源于stack exchange,提问作者Saravanan P
相关产品推荐
相关产品推荐

