【发布时间】:2023-04-05 13:18:01
【问题描述】:
我有一个 php 脚本,它使用以下命令下载、重新缩放和存储图像:
exec('convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg');
一切正常,直到我把它放在不同的服务器上(这个是 gentoo,如果这有什么不同的话。显然转换不会抓取远程图像,如果我给它提供一个像上面这样的 url,它会返回
@ 987654322@
我检查了使用标志,但似乎与远程图像无关...新服务器是一台本地机器,我可以访问它,所以我几乎可以在上面做任何事情 - 那么我怎样才能使这项工作?
另一个可能相关的问题是 php 的 file_get_contents() 也不会从那里获取远程文件。也许这是一个系统范围的设置,阻止二进制文件获取远程文件?以前有人遇到过这样的问题吗?你是怎么解决的?
谢谢,
马拉
更新:澄清
这个问题(imagemagick)与 PHP 无关。它在我的笔记本电脑上,可以很好地访问互联网,并且与防火墙无关。如果我打开一个 shell 并输入convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg
它甚至没有尝试访问互联网就失败并出现上述错误。另一方面,“wget”以及网络浏览器等都可以正常工作。在其他系统上,输入 shell 时的 convert 命令可以正常工作。
请忽略 file_get_contents 问题,因为我认为与上述原因无关
【问题讨论】:
-
虽然我可以通过两步 wget -> 转换过程来解决问题,但我想避免这种情况:我不想处理时间问题和制作 shell 脚本,等等。Imagemagick 可以加载远程图像,所以我想使用这个功能而不是仅仅解决问题。
-
您需要重新编译 ImageMagick(首先)和 PHP(最后)。我不会说 Gentoo,所以我不知道正确的咒语,但我会开始在构建配置文件中查找选项。
-
'convert' 从 shell 调用时仍然无法获取文件,所以我认为它与 php 没有任何关系... ImageMagick 中的构建选项似乎都没有处理远程文件:-\
-
远程服务器是否“看到”互联网?尝试从服务器控制台 ping 一些网页
-
问题不在远程机器上,而是在本地机器上(即我在笔记本电脑上镜像网站)。它可以很好地看到互联网(我现在就在上面),但 imagemagick 似乎出于某种原因不想解析 url...