2013-04-15 3 views
0

Я запускаю функцию оболочки из php, чтобы преобразовать видеофайл в flash, как только он будет загружен. Функция exec такая:Функция exec не работает как ожидалось

exec("ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv"); 

// if I echo the string it returns: 
// ffmpeg -i /home/vceroot/public_html/example.com/test/intraweb/app/webroot/files/videos/516c1203-0484-417a-b047-5488c40293e9.mpg -ar 22050 -r 32 -f flv -s 640x480 /home/vceroot/public_html/example.com/test/intraweb/app/webroot/files/videos/516c1203-0484-417a-b047-5488c40293e9.flv 
// the locations are correct 

Однако, он не конвертирует видео.

После того, как он загрузил файл, он просто возвращается к действию индекса. Нет конвертированного файла, хотя загруженный файл есть.

Мое разрешение для папки - 755. И владелец папки - apache. Я не знаю, что еще делать. Может ли кто-нибудь помочь мне?

UPDATE

Так что я изменил мой EXEC запрос немного и повторил вывод:

exec("ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv 2>&1", $output, $return); 
die(print_r($output)); 

Это возвратил следующую ошибку:

Array ([0] => sh: ffmpeg: command not found) 1 

Так что я изменил его немного к этому:

exec("/usr/local/bin/ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv 2>&1", $output, $return); 
die(print_r($output)); 

И теперь он возвращается:

Array ([0] => /usr/local/bin/ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory) 1 

Куда я иду отсюда?

+0

Вы проверили, что в вашем файле php.ini установлен безопасный режим? – karmafunk

+1

Что такое выполнение 'exec()'? –

+0

Также убедитесь, что у вас нет 'exec' в вашем disable_functions – Pitchinnate

ответ

0

Итак, я выполнил мою вторую ошибку и исправил ее, добавив местоположение libavdevice.so.55 в файл /etc/ld.so.conf и запустив ldconfig после этого.

Это работает сейчас.

Смежные вопросы