Запускайте команды CLI, используя скрипт PHP

Я хочу, чтобы преобразовать FLV- файл в MPG с помощью Avconv он запускается последовательно с помощью терминала. Моя проблема - запустить команду, используя скрипт php. Я пишу код, но я не получил результат. Мой код следующим образом

<?php
$cmd="avconv -i http://localhost/test3/a.flv http://localhost/test3/intermediate1.mpg";
$results = shell_exec($cmd.'2>&1');
?>  

Я попробовал также следующий код, но не повезло

<?php
$cmd="avconv -i /home/elby/workspace/test3/a.flv /home/elby/workspace/test3/intermediate1.mpg";
$results = shell_exec($cmd.'2>&1');
echo $results;
?>

2 ответа

Решение

Во-первых, первый пример выполнения является бессмысленным, согласно руководству avconv требуется 2 параметра:

avconv [global options] [[infile options][-i infile]]... {[outfile options] outfile}...

И вы не можете просто сказать программе, чтобы сохранить файл в http протокол, как это.

Второй вызов... Есть несколько возможных проблем с этим:

  • Вы запускаете скрипт из Интернета или из CLI? Веб-сервер может (и, вероятно, будет) использовать другого пользователя, который не будет иметь доступа к папкам
  • PHP-скрипты имеют тайм-аут (по умолчанию 30 секунд), а конвертация видео занимает намного больше времени
  • PHP может иметь shell_exec отключен
  • PHP может иметь safe_mode включенный
  • PHP может иметь проблемы с PATH переменная окружения, попробуйте использовать абсолютный путь
  • С отключенным error_reporting возможно, вы уже зарегистрировали ошибку, но не отображаются
$cmd="avconv -i /home/elby/workspace/test3/a.flv /home/elby/workspace/test3/intermediate1.mpg";
$results = shell_exec($cmd.' 2>&1');
echo $results;

Используйте абсолютный путь к avconv.

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