0

带有消息“无法打开文件/data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png”的“ImagickException”

嗨,当我想从网页创建 PDF 文件时,我收到了这条消息,即 png 文件。仅当 PDF 的内容包含一些 PNG 文件时才会引发错误。当我删除所有应该是 pdf 的 png 文件时,一切都是正确的。当我查看 php 信息时,我看到 png 是 Imagick 支持的格式。当我试图在谷歌上找到解决方案时,它返回了许多具有相同错误但几乎没有解决方案的站点。我找到的唯一解决方案是将另一个库安装到服务器。但如果有的话,我更喜欢另一种解决方案。

感谢托马斯的任何建议

4

2 回答 2

3

ImageMagick 确实可以获取 png 文件并将其转换为 pdf。您确定该文件实际上位于服务器上的正确位置吗?

感觉 ImageMagick 的 inout 命令可能不正确。下面的路径看起来很奇怪。

数据/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png
                         ^^^^^
                         这是预期的吗?

如果你告诉我网站,我可以告诉你更多。否则,我会说它是网站 php/python 脚本中的错误。对我来说,这看起来不像是 ImageMagick 问题。

于 2011-05-10T08:14:39.830 回答
1

ImagickException 错误消息表明 Imagick(PHP 类)在 'file://' 前缀上阻塞,这是一个流包装器,是 PHP 近期添加的。Imagick 文档对 stremwrappers 的使用并不清楚,而且可以肯定的是,Imagick 不支持它们。当它在文件名的第一个字节中没有看到“/”时,它假定文件名是相对的,并将当前目录预先添加到它,创建你在问题中粘贴的怪物字符串。

解决方案是修剪要发送到 Imagick 的文件名上的“file://”前缀。文件名应该是绝对的(以 / 开头)或相对的。

if (strpos('file://', $filename) === 0) {
  $filename = substr($filename, 7);
}
于 2013-01-20T20:50:03.243 回答