imagemagick не может загрузить удаленные изображения - PullRequest
0 голосов
/ 07 января 2010

У меня есть скрипт php, который загружает, масштабирует и сохраняет изображение, используя следующую команду:

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

Все работало нормально, пока я не установил его на другом сервере (этот gentoo, если в этом есть какая-то разница. Очевидно, что convert не получит удаленные изображения, и если я передам ему URL-адрес, подобный приведенному выше, он вернет
convert: missing an image filename 'images/somename.jpg' @ convert.c/ConvertImageCommand/2822.

Я проверил флаги использования, но, похоже, ничто не относится к удаленным изображениям ... Новый сервер - это локальная машина, к которой у меня есть root-доступ, поэтому я могу почти все на ней делать - так как я могу заставить эту работу работать?

Другая, возможно, связанная с этим проблема заключается в том, что php file_get_contents () также не будет получать удаленные файлы оттуда. Может быть, это общесистемный параметр, запрещающий двоичным файлам получать удаленные файлы? У кого-нибудь была такая проблема? Как ты это решил?

Спасибо
Мало

Обновление: уточнить
Эта проблема (imagemagick) не имеет ничего общего с PHP. Он на моем ноутбуке, который может нормально выходить в интернет и не связан с брандмауэрами. Если я открою оболочку и наберу
convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg
это происходит с ошибкой выше, даже не пытаясь получить доступ к Интернету. С другой стороны, 'wget', а также веб-браузеры и т. д. работают нормально. В других системах команда convert при вводе в оболочку работает без ошибок.

Пожалуйста, не обращайте внимания на проблему file_get_contents, так как я считаю, что она не связана по вышеуказанным причинам

Ответы [ 3 ]

1 голос
/ 07 января 2010

Можете ли вы получить другие ресурсы через HTTP?

Если нет, то на сервере, вероятно, включен брандмауэр, который запрещает доступ (как вы упоминали, функция PHP file_get_contents () также не работает).

Если вы можете получать другие ресурсы через HTTP, то сервер, с которого вы пытаетесь получить изображение, может по какой-то причине блокировать вам доступ.

Также важно отметить, что любые вызовы exec будутЗапустите программу от имени того же пользователя, что и PHP, поэтому убедитесь, что пользователь запускает PHP без проблем с правами доступа.

1 голос
/ 07 июля 2010

Скорее неинтуитивно, imagemagick должен быть скомпилирован с поддержкой xml для загрузки удаленных изображений. Таким образом, пользователям Gentoo потребуется включить флаг использования xml .

1 голос
/ 07 января 2010

Первое, что приходит на ум, это проблема с разрешениями. Проверьте разрешения для целевого каталога. Убедитесь, что ImageMagick действительно может сохранить файлы там.

Помните, что PHP, запускаемый с http-сервера, запускается с другими разрешениями, чем из командной строки.

DC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...