Системный вызов convert в php работал годами, но перестал работать в начале этого года. Все команды, которые я использую, работают правильно, если они выполняются из командной строки с помощью Putty.
Тестовый файл php, который я создал для отладки, это
<?
$string = "convert -verbose -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
passthru($string);
?>
<IMG SRC='image/temp222_main_menu.png ' alt='main_menu'>
Выходной файл не создается. я получаю этот ответ
startline/main_menu.png PNG 600x1024 600x1024+0+0 8-bit DirectClass 92.1KB 0.020u 0:00.020
Если я заменю свою строку на это
$string = "convert -version -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
Выходной файл создается, но его размер не изменяется.
Я получаю этот ответ:
Version: ImageMagick 6.6.0-4 2012-04-26 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP
Интересно, что это работало с 2008 года до начала этого года. Возможно, это было, когда я перешел на PHP5 и новый сервер, не уверен. Это работает на 1and1.com
В техподдержке 1and1 сказали, что проблема в том, что аутфайла не существует, и закрыли дело. Это было не очень полезно.
Мне интересно, есть ли что-то, что мне нужно поместить в мой файл php.ini или что-то в этом роде.
Я также пробовал это: exec("/usr/bin/convert -resize 200x200 image/temp222_main_menu.png"); ?>
Просто заметка. Я ввел подробное описание, чтобы быть уверенным, что я действительно запускаю программу, что какой-то вывод возвращается. Это также показывает, что он загружает правильный файл. Именно поэтому я использовал passthru вместо exec или system. Это просто тестовый скрипт. Сценарий, который я использовал до того, как он сломался, не использовал passthru, но в нем было слишком много сообщений. Суть в том, что исполняемая строка не работает в php, но работает в командной строке, поэтому она правильная.