libavdevice.so.57: не удалось сопоставить сегмент из общего объекта: в доступе отказано "

Я успешно установил ffmpeg ver. 4.4.7 на centos, с общим включением как таковым:

[root@localhost ~]# ffmpeg
ffmpeg version N-81555-g496d97f Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --prefix=/usr/local/ffmpeg_build --extra-cflags=-I/usr/local/ffmpeg_build/include --extra-ldflags=-L/usr/local/ffmpeg_build/lib --bindir=/usr/local/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-shared
  libavutil      55. 29.100 / 55. 29.100
  libavcodec     57. 54.102 / 57. 54.102
  libavformat    57. 48.102 / 57. 48.102
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 60.100 /  6. 60.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Однако, когда я бегу в php, через exec я получаю

"/usr/local/bin/ffmpeg: ошибка при загрузке общих библиотек: libavdevice.so.57: не удалось сопоставить сегмент из общего объекта: разрешение запрещено"

Я знаю, что веб-сервер выполняет команду как пользователь 'apache', а не как root, но я установил ffmpeg в / usr / local / ffmpeg_build по этой конкретной причине, чтобы обычные пользователи могли использовать ffmpeg.

Что я упустил? Что означает эта ошибка?

1 ответ

Решение

Хорошо, я нашел ответ по этой ссылке http://www.idmworks.com/fix-failed-map-segment-shared-object-permission-denied/

Оказалось, что SElinux в Enforcing mode не Permissive, он начал работать, как только я установил его в permissive mode.

$ getenforce
Enforcing
$ sudo setenforce 0
$ getenforce
Permissive

Сделать его постоянным

 vi /etc/selinux/config

и изменить исполнение на разрешительный

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