2012-06-04 3 views
0

У меня возникла странная проблема с ImageMagick.ImageMagick/PHP Resizing Issue: Image Wont Resize, но ImageMagick установлен

В том же сценарии, у меня есть следующий код:

$ct = system("convert -version"); 
echo $ct; 

И показывает следующий ответ:

Version: ImageMagick 6.6.0-4 2012-04-26 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP 

Однако, когда я пытаюсь сделать это:

$ct2 = system("convert -resize 800x600 test-image.jpg test-image2.jpg", $retval); 
echo $retval; 

Он возвращает 1, но изображение не изменяется. Не следует ли создать второе изображение, изменить его размер под именем файла «test-image2.jpg»? Я проверил разрешения на каталоги, и они установлены на 0777, так что это не должно быть проблемой. Любая идея, что может здесь происходить?

+0

запустить команду себя тем же пользователем для отладки: 'Судо -u WWW-данные преобразования -resize 800х600 тест-image.jpg Test- image2.jpg' –

+0

Я просто попытался выполнить команду sudo в SSH, и в ней говорится, что Команда sudo не найдена. –

ответ

1

Код ошибки 1 обычно считается ошибкой. 0 означает «ошибки не было».

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

convert test-image.jpg -resize 800x600 test-image2.jpg 

Хорошая идея состоит в том, чтобы проверить IMagick расширение для PHP. Он предоставляет объектно-ориентированный интерфейс для большинства функций ImageMagick.

+0

^Просто попробовал это, посмотрев на другой пример сценария, и до сих пор не повезло. $ retval по-прежнему отображает 1, что я не понял, была ошибка. –

+0

Мне бы очень хотелось, чтобы установить iMagick, но, к сожалению, я работаю над веб-хостом здесь, и я не уверен, как его установить. Я не очень хорошо разбираюсь в терминале, и даже не уверен, что смогу установить его на моем хосте. И даже если я могу, не знаю, где и как. –

+0

@JohnHubler Ваш хост не дает вам доступ к оболочке, но они позволяют выполнять функции 'system'? Если вы хотите знать, почему команда shell не работает, я предлагаю перейти к исходному коду. Отладка с 0 или 1 возвращаемыми значениями не увлекательна. –

1

Попробуйте это, чтобы отобразить сообщение об ошибке:

$array = array(); 
echo "<pre>"; 
exec("convert test-image.jpg -resize 800x600 test-image2.jpg 2>&1", $array); 
echo "<br>".print_r($array)."<br>"; 
echo "</pre>"; 

Также я использую EXEC не систему, как было сказано выше имя файла должно прийти сразу после преобразования, и я бы не использовать - но вместо _.

система выводит на экран и Exec не так в первом коде, вы должны быть в состоянии использовать это:

system("convert -version"); 

Попробуйте это и посмотреть, что путь к IM есть и попытаться изменить преобразование в путь, который, вероятно, будет что-то вроде/USR/местные/бен/конвертировать

echo "<pre>"; 
system("type convert"); 
echo "</pre>"; 
+0

Этот сценарий производит следующее: Array ( [0] => [1] => libgomp: создание темы не удалось: Ресурс временно недоступен ) –

+0

Я никогда не видел эту ошибку раньше! Глядя на форум чата, он упоминает его относительно способа установки IM. В мой ответ добавлена ​​заметка. – Bonzo

+1

@JohnHubler После того, как вы получили сообщение об ошибке, результат Google получил ответ http://drupal.org/node/1493574#comment-6064852 –