в php exec функция не работает для запуска команды оболочки.
если я буду работать в терминале
$ avconv -i in.mp4 -f mp3 -ab 192000 -vn rip.mp3
команда работает нормально, команда предназначена для преобразования видео в mp3. Но когда я пытаюсь выполнить через PHP, это просто не работает.
exec("avconv -i in.mp4 -f mp3 -ab 192000 -vn rip.mp3");
или если я попробую exec ("whoami"); дает мне правильный результат.
хорошо, это проблема с разрешением файла. У www-data не было разрешения на запись файла после изменения разрешения, которое оно сейчас работает.
Скорее всего, вам нужно предоставить команде полный путь к вашим файлам, потому что текущий каталог в PHP не такой, как в вашей оболочке.
exec("avconv -i /path/to/in.mp4 -f mp3 -ab 192000 -vn /path/to/rip.mp3");
Возможно, даже полный путь к aconv
должен быть безопасным:
exec("/bin/avconv -i /path/to/in.mp4 -f mp3 -ab 192000 -vn /path/to/rip.mp3");
Проверьте, каков правильный путь для aconv
с помощью which aconv
.
Чтобы проверить наличие какой-либо ошибки, добавьте второй параметр в команду exec
и распечатайте его:
exec('...', $result);
var_dump($result);