opened image

Установка ffmpeg-php на Centos 7 и Ubuntu 20

В данной статье я опишу как быстро установить расширение ffmpeg для любой версии PHP за 5 минут.

Расширение ffmpeg уже устарело, не совместимо с многим ПО, не поддерживается более 15 лет и в целом есть альтернативы получше.

Однако есть еще много проектов, которые были написаны давно и всё еще используют данное расширение.

К счастью расширение ffmpeg-php можно установить на версии php от 5.4 до 8.2 (последняя на данный момент)

Инструкции по установке данного расширения часто бывают неактуальные, запутанные и могут не работать, для того чтобы облегчить задачу и сделать возможность быстрой установки данного расширения на любую php версию за несколько минут, можно скачать ffmpeg в архиве, который можно скачать здесь в статье.

 

 

Пример установки на PHP 5.4 на Centos 7.

Устанавливаем зависимости:

yum install -y yum-utils epel-release 

yum install -y wget autoconf automake gcc gcc-c++ m4 libtool make pkgconfig zlib bzip2 fribidi freetype fontconfig gnutls gd-devel libass libdrm openjpeg

yum install -y php-devel 

 

Скачиваем архив и загружаем на сервер в папку root и распаковываем. Ссылка для скачивания архива

cd /root

tar -xzf ffmpeg-php.tar.gz

rm ffmpeg-php.tar.gz

 

Копируем файлы из архива и делаем ffmpeg доступным системе:

Внимание! Если ffmpeg уже установлен в Вашей системе, копирование следующих файлов может привести к конфликту, рекомендую делать снимок системы на всякий случай, если это сервер VPS. Все действия Вы выполняете на свой страх и риск!

mv ffmpeg-php/centos7/ffmpeg /usr/local/

echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' >> ~/.bashrc

export PATH="/usr/local/ffmpeg/bin:$PATH"

 

Далее устанавливаем само PHP расширение.

Если нам нужно установить на PHP версии 7.0 и выше, то переходим в папку php78:

cd /root/ffmpeg-php/php78/

Для PHP версии 5.4-5.6, переходим в папку php5:

cd /root/ffmpeg-php/php5/

 

Собираем расширение:

/usr/bin/phpize

CPPFLAGS="-I/usr/include/php/ext/gd -I/usr/local/ffmpeg/include" ./configure --enable-shared --prefix=/usr --with-php-config=/usr/bin/php-config --with-ffmpeg="/usr/local/ffmpeg"

make && make install

 

Теперь нам нужно подключить расширение к нашему PHP. У меня PHP работает в режиме модуля Apache, поэтому нужно также перезапустить службу Apache.

echo 'extension=ffmpeg.so' > /etc/php.d/ffmpeg.ini

systemctl restart httpd

 

Готово, теперь в phpinfo мы должны увидеть наш установленный модуль:

 

 

Пример установки на PHP 8.2 на Ubuntu 20.04.

 

Устанавливаем зависимости:

apt install -y wget autoconf automake build-essential m4 libtool make pkg-config zlib1g bzip2 libfribidi-bin libfribidi0 libfreetype6 fontconfig libgnutls30 

apt install -y libgd-dev libass9 libdrm-common libdrm2 libopenjp2-7 libvdpau1 libxcb1 libxcb-shm0 libxcb-xfixes0 libxcb-shape0

apt install -y php8.2-dev

 

 

Закачаиваем архив в папку root и распаковываем. Ссылка для скачивания

cd /root

tar -xzf ffmpeg-php.tar.gz

rm ffmpeg-php.tar.gz

 

 

Копируем файлы утилиты ffmpeg из архива и делаем ffmpeg доступным системе:

Внимание! Если ffmpeg уже установлен в Вашей системе, копирование следующих файлов может привести к конфликту, рекомендую делать снимок системы на всякий случай, если это сервер VPS. Все действия Вы выполняете на свой страх и риск!

mv ffmpeg-php/ubuntu20/ffmpeg /usr/local/

echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' >> ~/.bashrc

export PATH="/usr/local/ffmpeg/bin:$PATH"

 

 

Далее устанавливаем само PHP расширение.

 Для PHP версии 5.4-5.6, переходим в папку php5:

cd /root/ffmpeg-php/php5/

 Для нашего примера на версии PHP 8.2, переходим в папку php78:

cd /root/ffmpeg-php/php78/

 

 

Собираем расширение:

Здесь путь /usr/include/php/20220829/ext/gd для каждой версии PHP разный, Вам нужно будет его изменить в 2-х строчках ниже на тот, который есть у Ваc.

/usr/bin/phpize8.2

ln -s /usr/local/ffmpeg/lib/libcdio.so.16 /usr/lib/libcdio.so.16

ln -s /usr/include /usr/include/php/20220829/ext/gd/libgd

CPPFLAGS="-I/usr/include/php/20220829/ext/gd -I/usr/local/ffmpeg/include" ./configure --enable-shared --prefix=/usr --with-php-config=/usr/bin/php-config8.2 --with-ffmpeg="/usr/local/ffmpeg"

make && make install

 

 

Теперь нам нужно подключить расширение к нашему PHP. У меня PHP работает в режиме Apache + FastCGI в панели Hestia, поэтому нужно также перезапустить службы Apache и PHP-FPM:

echo 'extension=ffmpeg.so' > /etc/php/8.2/mods-available/ffmpeg.ini

ln -s /etc/php/8.2/mods-available/ffmpeg.ini /etc/php/8.2/fpm/conf.d/20-ffmpeg.ini

ln -s /etc/php/8.2/mods-available/ffmpeg.ini /etc/php/8.2/cli/conf.d/20-ffmpeg.ini

systemctl restart apache2

systemctl restart php8.2-fpm

 

Расширение ffmpeg  для PHP установлено.