Команды FFmpeg работают только для root (centos 6.10)

#ffmpeg #root #centos6 #shell-exec #ffmpeg-php

#ffmpeg #root #centos6 #shell-exec #ffmpeg-php

Вопрос:

У меня выделенный сервер. Я установил FFmpeg в свой root. Все команды, связанные с FFmpeg, работают, если я вошел в систему как root, но ни одна команда не работает, если я вошел в систему как пользователь. Я также попытался добавить одного пользователя в sudoers. Также я хочу использовать команды FFmpeg в PHP shell_exec() или exec(). Кто-нибудь может подсказать мне решение. Заранее спасибо.

пользовательская команда:

 $ ffmpeg
  

вывод:

 -bash: ffmpeg: command not found
  

корневая команда:

 $ ffmpeg
  

вывод

 ffmpeg version N-93394-g14eea7c Copyright (c) 2000-2019 the FFmpeg 
developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static -- 
extra-cflags=-I/root/ffmpeg_build/include -
-extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra- 
libs=-lm --bindir=/root/bin --enable-gpl --enab
le-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus -- 
enable-libvpx --enable-libx264 --enable-libx
265 --enable-nonfree
libavutil      56. 26.100 / 56. 26.100
libavcodec     58. 47.103 / 58. 47.103
libavformat    58. 26.101 / 58. 26.101
libavdevice    58.  6.101 / 58.  6.101
libavfilter     7. 48.100 /  7. 48.100
libswscale      5.  4.100 /  5.  4.100
libswresample   3.  4.100 /  3.  4.100
libpostproc    55.  4.100 / 55.  4.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] 
outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
  

Комментарии:

1. Каким образом команды не работают? Пожалуйста, укажите точную командную строку, которую вы используете, и вставьте полное сообщение о выходе / ответе на ошибку.

2. Когда я пытаюсь запустить FFmpeg, войдя в систему как пользователь, не являющийся root, я получаю сообщение об ошибке -bash: ffmpeg: команда не найдена

3. Это означает, что это не в пути пользователя. Проверьте настройку ПУТИ и убедитесь, что он включает /usr/local/bin или где бы вы ни установили ffmpeg. (Также: отредактируйте свой вопрос, чтобы включить эту информацию)

4. Я нашел ПУТЬ, используя команду $ whereis ffmpeg, и я получил ПУТЬ / usr / include / ffmpeg. После использования этого пути я получаю ту же ошибку. Спасибо за воспроизведение.

5. Как вы «используете этот путь»? «включить» обычно не является местом для хранения двоичных файлов. Выводится which ffmpeg при запуске от имени root. Затем используйте эту полную строку (полный путь плюс ffmpeg) от имени другого пользователя.

Ответ №1:

Убедитесь, что ПУТЬ пользователя включает каталог, в котором расположены двоичные файлы ffmpeg (обычно /usr/local/bin или /opt/local/bin ).

Если вы не можете его найти, вы можете спросить систему, какой из них она использует, когда вы входите в систему как root с помощью команды:

 which ffmpeg
  

В вашем случае, согласно информации, которую вы добавили к вопросу, похоже, что двоичные файлы находятся в / root / bin

Что само по себе может быть проблемой, если /root/bin недоступен для чтения в мире, а содержимое в мире исполняемо.

Комментарии:

1. Спасибо за ответ. Я использовал команду, которая ffmpeg, и получил новый путь / root / bin / ffmpeg. При использовании этого ПУТИ выдается ошибка — -bash: /root/bin/ffmpeg: в разрешении отказано

2. Правильно. Лучшим решением было бы заново собрать двоичные файлы в подходящем месте (т. е. переделать вашу конфигурацию, чтобы поместить двоичные файлы в /usr / local /bin ). Но, по крайней мере, вам нужно убедиться, что каталог, в котором они находятся, доступен для чтения по всему миру, а двоичные файлы доступны для чтения по всему миру и являются исполняемыми по всему миру.

3. Спасибо Л. Скотту Джонсону. С вашей помощью я решил свою проблему, используя — superuser.com/questions/1080027 /…

4. @PrashantHanamghar Предполагая, что у вас есть root-доступ (я предполагаю, что вы пользователь, который фактически скомпилировал ffmpeg), и альтернативным решением было бы просто скопировать или переместить файл ffmpeg из /root/bin в /usr/local/bin и предоставить ему надлежащие разрешения для выполнения другими пользователями.