“ImagickException”出现消息“无法打开文件”

发布于 2024-11-06 03:13:52 字数 370 浏览 0 评论 0原文

“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 信息时,我发现 Imagick 支持 png 格式。当我尝试在谷歌上寻找解决方案时,它返回了许多具有相同错误的网站,但几乎没有解决方案。我找到的唯一解决方案是在服务器上安装另一个库。但如果有的话,我更喜欢另一种解决方案。

感谢任何建议 托马斯

'ImagickException' with message 'unable to open file /data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png'

Hi,
I got this message when I want to crete PDF file from the webpage, that png files. It throws error only when content of PDF contains some PNG file. When I remove all png files, that should be in pdf, everything is correct.
When I look in php info, I see png is supported format for Imagick. When I tried to find solution on google, it returned many of sites with the same error but almost no solution. the only solution I have found is to install another library to server. But I would prefer another solution if there is any.

thnaks for any advice
Tomas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染火枫林 2024-11-13 03:13:52

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 问题。

ImageMagick can indeed take png files and convert it to pdf. Are you sure the file is in fact on the server at the correct place.

it feels like the inout command to ImageMagick may be incorrect. The path below looks weird.

data/web/myweb.com/sub/7/file:/data/web/myweb.com/sub/7/sites/default/files/logo.png
                         ^^^^^
                         Is this expected?

I can tell you more if you tell me the website. Otherwise, I would say its a bug in the website php/python script. It doesn't look like an ImageMagick issue to me.

成熟的代价 2024-11-13 03:13:52

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

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

if (strpos('file://', $filename) === 0) {
  $filename = substr($filename, 7);
}

The ImagickException error message indicates that Imagick (PHP class) is choking on the 'file://' prefix, which is a streamwrapper, fairly recent PHP addition. Imagick documentation is not clear on the use of stremwrappers, and it is most certain that Imagick does not support them. When it sees no '/' in the first byte of the file name, it assumes the file name is relative and pre-pends current directory to it, creating the monster string you pasted in the question.

Solution is to trim the 'file://' prefix on the file name you are sending to the Imagick. File name should be either absolute (start with /) or relative.

if (strpos('file://', $filename) === 0) {
  $filename = substr($filename, 7);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文