'ImagickException',消息'无法打开文件/data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png “
您好, 当我想从网页上创建PDF文件时,我收到了这条消息,即png文件。仅当PDF的内容包含某些PNG文件时,它才会抛出错误。当我删除所有png文件时,应该是pdf,一切都是正确的。 当我查看php信息时,我看到png是Imagick支持的格式。当我试图在谷歌上找到解决方案时,它返回了许多具有相同错误但几乎没有解决方案的网站。我找到的唯一解决方案是将另一个库安装到服务器。但如果有的话,我宁愿选择另一种解决方案。
提示任何建议 托马斯答案 0 :(得分:3)
ImageMagick确实可以获取png文件并将其转换为pdf文件。您确定该文件实际上位于服务器上的正确位置。
感觉像ImageMagick的inout命令可能不正确。下面的路径看起来很奇怪。
data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png ^^^^^ Is this expected?
如果你告诉我网站,我可以告诉你更多。否则,我会说它是网站php / python脚本中的一个错误。它对我来说看起来不像是一个ImageMagick问题。
答案 1 :(得分:1)
ImagickException错误消息表明Imagick(PHP类)正在阻塞'file://'前缀,这是一个流量包装器,是最近添加的PHP。关于使用stremwrappers的Imagick文档并不清楚,而且Imagick最不支持它们。当它在文件名的第一个字节中看不到'/'时,它假定文件名是相对的并且将当前目录预先挂起,创建你在问题中粘贴的怪物字符串。
解决方法是修剪要发送到Imagick的文件名上的'file://'前缀。文件名应该是绝对的(以/开头)或相对的。
if (strpos('file://', $filename) === 0) {
$filename = substr($filename, 7);
}