我有一个 php 脚本,它使用以下命令下载、重新缩放和存储图像:
exec('convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg');
一切正常,直到我把它放在不同的服务器上(这个是 gentoo,如果这有什么不同的话。显然转换不会抓取远程图像,如果我给它一个像上面那样的 url 它返回
转换:缺少图像文件名“images/somename.jpg”@convert.c/ConvertImageCommand/2822。
我检查了使用标志,但似乎与远程图像无关...新服务器是一台我有 root 访问权限的本地机器,所以我几乎可以在上面做任何事情 - 那么我怎样才能让它工作?
另一个可能相关的问题是 php 的 file_get_contents() 也不会从那里获取远程文件。也许这是系统范围内的设置,阻止二进制文件获取远程文件?以前有人遇到过这样的问题吗?你是怎么解决的?
谢谢,
马拉
更新:澄清
这个问题(imagemagick)与PHP无关。它在我的笔记本电脑上,可以很好地访问互联网,并且与防火墙无关。如果我打开一个 shell 并输入
convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg
它甚至没有尝试访问互联网就因上述错误而失败。另一方面,“wget”以及网络浏览器等都可以正常工作。在其他系统上,将 convert 命令键入 shell 时可以正常工作。
请忽略 file_get_contents 问题,因为我认为它与上述原因无关
最佳答案
首先想到的是权限问题。 检查目标目录的权限。确保 imagemagick 实际上可以在那里保存文件。
请记住,从 http 服务器运行的 PHP 与从命令行运行的权限不同。
直流
关于php - imagemagick 无法加载远程图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2018855/