У меня очень странная ошибка, которую мне еще предстоит найти. ОБНОВЛЕНИЕ см. Решение ниже
Я пытаюсь преобразовать полноразмерное изображение в миниатюру 160x120. Отлично работает с файлами jpg и jpeg любого размера, но не с png.
Команда ImageMagick:
/opt/local/bin/convert '/WEBSERVER/images/img_0003-192-10.png' -thumbnail x320 -resize '320x<' -resize 50% -gravity center -crop 160x120+0+0 +repage -quality 91 '/WEBSERVER/thumbs/small_img_0003-192-10.png'
PHP функция (сокращенная)
...
$cmd = "/opt/local/bin/convert '/WEBSERVER/images/img_0003-192-10.png' -thumbnail x320 -resize '320x<' -resize 50% -gravity center -crop 160x120+0+0 +repage -quality 91 '/WEBSERVER/thumbs/small_img_0003-192-10.png'";
exec($cmd, $output, $retval);
$errors += $retval;
if ($errors > 0) {
die(print_r($output));
}
Когда эта функция запускает $ retval, равный 1, что означает, что команда преобразования не выполнена (миниатюра не создана).
Это то, где это становится интересным, если я запускаю точно такую же команду в своей оболочке, она работает.
wedbook:~ wedix$ /opt/local/bin/convert '/WEBSERVER/images/img_0003-192-10.png' -thumbnail x320 -resize '320x<' -resize 50% -gravity center -crop 160x120+0+0 +repage -quality 91 '/WEBSERVER/thumbs/small_img_0003-192-10.png'
wedbook:~ wedix$
Я пытался использовать различные функции PHP, такие как system, passthru, но это не сработало. Я подумала, может, кто-то здесь знает решение.
Я использую
MAMP 1.7.2
Спасибо!
UPDATE
Я обновил следующие зависимости
libpng from 1.2.35 to 1.2.37
libiconv from 1.12_2 to 1.13_0
ImageMagick 6.5.2-4_1 to 6.5.2-9_0
Однако это не решило мою проблему.
2-е ОБНОВЛЕНИЕ
Я наконец-то нашел кое-что, что могло бы помочь, когда функция запускается, это то, что напечатано в журналах Apache:
dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
Referenced from: /opt/local/bin/convert
Reason: Incompatible library version: convert requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
3-е ОБНОВЛЕНИЕ
libiconv.2.dylib - версия 8.0.0 ...
bash-3.2$ otool -L /opt/local/lib/libiconv.2.dylib
/opt/local/lib/libiconv.2.dylib:
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
4-е ОБНОВЛЕНИЕ
Проблема связана с MAMP, см. Решение ниже