Unix-скрипт ImageMagick не работает при запуске php shell_exec()
Я должен создать последовательность переходов изображений, используя сценарии Фреда ImageMagick, в частности, переходы FX.
В моем php-коде я изменяю размер всех изображений, которые я получил, до стандартного размера, затем я переименовываю все эти изображения в что-то вроде pic000001.jpg, pic000002.jpg, pic000003.jpg и т. Д. (Я продолжаю считать с помощью $count), затем Я делаю:
$frameIndex=0;
$frames=18;
//for all the pic000001.jpg, pic000002.jpg, pic000003.jpg.... do a transition
//between them
for($seq=1;$seq<$count;$seq++){
//here I take a picture and the next(IE pic000001 and pic000002)
echo shell_exec("fxtransitions -e swirl -f $frames -d 20 -p 50 $path/pic".str_pad($seq, 6, '0', STR_PAD_LEFT).".jpg $path/pic".str_pad(($seq+1), 6, '0', STR_PAD_LEFT).".jpg $path/fx%06d.jpg");
//here I rename the temporany frames called
//fx000000.jpg to fx000035.jpg for each transition
//to a common index
for($c=0;$c<($frames*2);$c++){
rename("fx".str_pad($c, 6, '0', STR_PAD_LEFT).".jpg" ,str_pad($frameIndex, 6, '0', STR_PAD_LEFT).".jpg");
$frameIndex++;
}
}
Затем я использую FFMpeg, чтобы объединить все кадры и сделать видео. Проблема в том, что fxtransition сообщает об ошибке:
--- FILE DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---
(это сообщение, сгенерированное сценарием наверняка), за которым следуют такие сообщения:
Warning: rename(fx000000.jpg,000000.jpg): No such file or directory in /var/www/html/TEST/APP/generateVideo.php on line 168
потому что картинки не были сгенерированы (это показывает, что алгоритм нумерации кадра правильный, поэтому не зацикливайтесь на этом).
Если я открываю терминал на сервере с помощью ssh-соединения и запускаю эту команду, он выдает мне ту же ошибку, если только я не использую sudo. Если я использую sudo на php shell_exec, он не будет работать. shell_exec('whoami') возвращает apache, а apache является владельцем всех папок и файлов, которые я задействую в этих функциях.
Некоторая помощь, пожалуйста? Если у вас есть альтернатива скриптам fred's imagemagick для создания переходных кадров для создания видео, это также будет оценено.
2 ответа
Я столкнулся с этой проблемой при использовании одного из сценариев Fred ImageMagick. Решение состоит в том, чтобы обновить файл сценария (scriptname.sh) с помощью вашего любимого редактора (vim, nano и т. Д.) И установить правильный временный каталог. Увидеть ниже:
# set directory for temporary files
dir="." # suggestions are dir="." or dir="/tmp"
#
В моем случае временная директория была "/tmp"
# set directory for temporary files
dir="/tmp" # suggestions are dir="." or dir="/tmp"
#
Я сталкиваюсь с этой проблемой при использовании textcleaner из сценариев ImageMagick Фреда. Решение - использовать правильный путь.
В моем случае
установить каталог для временных файлов
dir="/var/www/html/textcleaner/images/" # предложения являются dir="." или dir="/tmp" #
Это должно быть доступно для записи
Также textcleaner.sh также переместится в проект.