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 также переместится в проект.

Другие вопросы по тегам