2010-01-07 75 views
0

我有一个PHP脚本,它的下载,再缩放和使用以下命令存储的图像:ImageMagick的无法加载远程图像

exec('convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg'); 

这一切都工作得很好,直到我把它放在不同的服务器上(这一个Gentoo的,如果有什么差别。显然,转换不会抢遥控器的图像,如果我给它一个url像上面返回
convert: missing an image filename 'images/somename.jpg' @ convert.c/ConvertImageCommand/2822.

我检查了使用标志,但似乎没有涉及到远程图像..新的服务器是我有权访问的本地机器,所以我几乎可以无论如何 - 我该如何做这项工作?

另一个可能相关的问题是,php的file_get_contents()不会从那里获取远程文件。也许这是一个防止二进制文件获取远程文件的系统范围的设置?有没有人有过这样的问题?你是如何解决它的?

感谢,
麻辣

更新:为了澄清
这个问题(ImageMagick的)无关用PHP。它在我的笔记本电脑上,可以很好地访问互联网,而且与防火墙无关。如果我打开一个外壳并键入
convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg
它会因上述错误而失败,甚至无法访问Internet。另一方面,'wget'以及网页浏览器等工作得很好。在其他系统上,输入到shell中时的convert命令没有错误。

,因为我相信它是不相关的上述

+0

虽然我可以通过将它转换为两步式wget→转换过程来解决问题,但我想避免这种情况:我不想处理计时问题和制作shell脚本等。Imagemagick可以加载远程图像,所以我想使用这个功能,而不是只是绕开这个问题。 – Mala 2010-01-07 07:32:11

+0

您需要重新编译ImageMagick(第一个)和PHP(最后一个)。我不会说Gentoo,所以我不知道适当的咒语,但是我会开始查看构建配置文件中的选项。 – 2010-01-07 07:36:20

+0

'convert'仍然无法从shell中调用时获取文件,所以我认为它与php没有任何关系...... ImageMagick中没有任何构建选项似乎与远程文件有任何关系: - \ – Mala 2010-01-07 07:43:51

回答

1

相反,不直观的是,imagemagick必须编译与XML支持为了加载远程图像。因此,Gentoo用户需要启用xml useflag。

+0

Mala答复为我工作。谢谢一堆。 – 2011-05-24 06:32:56

1

的原因,想到的是权限问题的第一件事请忽略的file_get_contents问题。 检查目标目录的权限。确保imagemagick实际上可以在那里保存文件。

请记住,从http服务器运行的PHP以不同于从命令行运行的权限运行。

DC

1

你能够通过HTTP检索其他资源吗?

如果没有,那么服务器可能启用防火墙,防止访问(正如您提到的PHP file_get_contents()函数也会失败)。

如果您能够通过HTTP检索其他资源,那么您试图从中获取图像的服务器可能会因某种原因阻止您访问。

还需要注意的是,任何对exec的调用都将以与PHP相同的用户身份运行该程序,因此请确保用户PHP运行时没有任何权限问题。

+0

感谢您的输入=)有问题的问题(转换)与PHP无关,也不支持严格防火墙防止HTTP请求(请参阅我的更新)。任何其他想法? – Mala 2010-01-07 13:35:59