使用Imagick的readImage()触发PDF安全策略错误,修改policy.xml后仍未解决
以下是你可能遗漏的排查点:
确认修改的是正确的policy.xml文件
不同系统、ImageMagick版本的policy.xml路径存在差异,常见路径有/etc/ImageMagick-6/policy.xml、/etc/ImageMagick/policy.xml。可以执行convert -list policy命令,查看当前生效的策略是否为你修改的配置,避免出现改错文件的情况。检查Ghostscript的状态
Imagick处理PDF完全依赖Ghostscript,若未安装Ghostscript,或是Apache运行用户(如www-data)没有执行Ghostscript的权限,即便policy配置正确也会触发错误。先执行gs --version确认Ghostscript正常安装,再检查对应权限是否足够。验证policy.xml的语法正确性
你的配置已经放开了PDF的coder权限,但要确保XML没有语法错误,比如标签未闭合、引号配对错误等。可以用XML校验工具扫描文件,避免因语法问题导致配置不生效。尝试重启整个系统
有时仅重启Apache不足以让ImageMagick的系统级配置完全生效,不妨尝试重启整个系统测试。排查SELinux/AppArmor等安全工具
部分服务器会通过SELinux或AppArmor做额外安全限制,可能阻止Imagick调用Ghostscript或读取PDF文件。可以临时关闭SELinux(执行setenforce 0)测试,若问题解决,需给相关操作添加允许规则。
内容的提问来源于stack exchange,提问作者danielE

