php - imagemagick 无法加载远程图像

标签 php linux file

我有一个 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/

相关文章:

php - 傻瓜版 Mailchimp (php)

php - 用户 'apache' @'localhost' 的访问被拒绝(使用密码 : NO)

c - 有没有办法将系统日志消息重定向到标准输出?

javascript - 使用 axios 在 POST 多部分/表单数据请求中发送文件和 json

file - 如何使用 markdown 语法链接到任何本地文件?

php - 在Docker容器中使用PhpStorm调试Symfony CLI应用程序

php - 从复杂的 MySQL 选择查询中删除重复项

php - try catch laravel 不适用于重复输入

linux - 猫密码 | awk -F' :' ' {printf $1}' 这个命令正确吗?

android - 从 android webview 访问本地数据