ВОЙТИ
    opened image

    В данной статье я опишу как быстро установить расширение 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 установлено.