Запускайте команды 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.