Гид по технологиям

Сборка PHP 5.4.12 с PHP‑FPM

5 min read PHP Обновлено 22 Nov 2025
Сборка PHP 5.4.12 с PHP‑FPM
Сборка PHP 5.4.12 с PHP‑FPM

Кратко: В этой инструкции шаг за шагом описано, как собрать PHP 5.4.12 из исходников с поддержкой PHP‑FPM, установить часто используемые расширения (APC, memcache, memcached, ionCube) и подключить версию в ISPConfig. Подходит для Debian/Ubuntu‑похо́жих систем; приведены команды и рекомендации по отладке.

Что это и для кого

Краткое определение: PHP‑FPM — менеджер процессов FastCGI для PHP, используемый на продуктивных серверах для повышения производительности и управления пулами воркеров. Инструкция рассчитана на системных администраторов и девопс‑инженеров, которые собирают специфическую версию PHP вручную.

Важно: PHP 5.4 устарел и больше не получает обновлений безопасности; используйте в изолированной среде, контейнере или для наследуемых проектов, где обновление невозможно.

Требования и подготовка

  • Сервер с правами root или sudo.
  • Доступ в интернет для скачивания исходников и пакетов.
  • Базовые инструменты сборки: build-essential, заголовочные файлы и dev‑пакеты для библиотек, которые вы хотите включить.

Выполните создание рабочих каталогов и скачивание исходников:

mkdir /opt/php-5.4.12
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.4.12.tar.bz2/from/this/mirror -O php-5.4.12.tar.bz2
tar jxf php-5.4.12.tar.bz2

cd php-5.4.12/

Установите обязательные пакеты для сборки и зависимости:

apt-get install build-essential
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev

Если вы собираете PHP с поддержкой IMAP, может потребоваться создание символьной ссылки на libc-client:

ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

Примечание: без этой ссылки ./configure может выдать ошибку “Cannot find imap library (libc-client.a)”.

Конфигурация и компиляция

Перейдите в каталог исходников и выполните конфигурацию. Ниже приведён пример команды ./configure с часто используемыми опциями. Отрегулируйте её под свои потребности. Посмотреть весь список опций можно через ./configure --help.

./configure \
--prefix=/opt/php-5.4.12 \
--with-pdo-pgsql \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable-calendar \
--with-curl \
--with-mcrypt \
--with-zlib \
--with-gd \
--with-pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--enable-fpm

make
make install

Опция --enable-fpm отвечает за включение PHP‑FPM. В зависимости от выбранных опций могут потребоваться дополнительные dev‑пакеты.

Конфигурация PHP и PHP‑FPM

Скопируйте шаблоны конфигурации в установленный префикс:

cp /usr/local/src/php5-build/php-5.4.12/php.ini-production /opt/php-5.4.12/lib/php.ini
cp /opt/php-5.4.12/etc/php-fpm.conf.default /opt/php-5.4.12/etc/php-fpm.conf

Откройте /opt/php-5.4.12/etc/php-fpm.conf и отредактируйте ключевые параметры. В строке listen укажите свободный порт, например 127.0.0.1:8998 (порт 9000 может быть занят системной версией PHP‑FPM). В конец файла добавьте включение конфигураций пулов:

[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8998
[...]
include=/opt/php-5.4.12/etc/pool.d/*.conf

Создайте каталог для пулов:

mkdir /opt/php-5.4.12/etc/pool.d

Скрипт инициализации (init.d)

Создайте init‑скрипт для управления службой PHP‑FPM:

vi /etc/init.d/php-5.4.12-fpm

Вставьте следующий скрипт (содержимое файла):

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.4.12-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.4.12-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.4.12/sbin/php-fpm
php_fpm_CONF=/opt/php-5.4.12/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.4.12/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"

wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Сделайте скрипт исполняемым и добавьте в автозагрузку:

chmod 755 /etc/init.d/php-5.4.12-fpm
update-rc.d php-5.4.12-fpm defaults

Запустите службу:

/etc/init.d/php-5.4.12-fpm start

Если в каталоге пулов ещё нет конфигураций, вы увидите предупреждение об include, которое можно игнорировать до создания пулов.

Установка расширений: APC, memcache, memcached

Для установки этих расширений удобно использовать PEAR/PECL. Сначала установите php-pear и инициализируйте конфигурацию PEAR для сборки в вашем префиксе:

apt-get -y install php-pear
cd /opt/php-5.4.12/etc
pecl -C ./pear.conf update-channels

Установка APC через pecl:

pecl -C ./pear.conf install apc

После установки добавьте в /opt/php-5.4.12/lib/php.ini строку:

extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Установка memcache:

pecl -C ./pear.conf install memcache

Добавьте в php.ini:

extension=memcache.so

Установка memcached (зависимости компиляции и название include):

apt-get install libmemcached-dev
ln -s /usr/include/libmemcached /usr/include/libmemcached-1.0
pecl -C ./pear.conf install memcached

Добавьте в php.ini:

extension=memcached.so

Важно: версии библиотек libmemcached и клиентских заголовков влияют на успешную сборку; при ошибках проверьте сообщения компилятора и установите соответствующие dev‑пакеты.

Установка ionCube Loader

Скачайте подходящий архив ionCube для вашей архитектуры и распакуйте (пример для x86_64):

cd /tmp
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Скопируйте загрузчик в директорию расширений и подключите его в php.ini перед строкой [PHP]:

cp ioncube/ioncube_loader_lin_5.4.so /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so

В начале /opt/php-5.4.12/lib/php.ini добавьте:

zend_extension = /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
[PHP]
[...]

После установки перезагрузите PHP‑FPM:

/etc/init.d/php-5.4.12-fpm reload

Подключение версии в ISPConfig

В ISPConfig 3.0.5 новая версия PHP регистрируется в System > Additional PHP Versions. На вкладке “Name” укажите понятное имя (например, “PHP 5.4.12”). Затем на вкладке «PHP‑FPM Settings» заполните параметры соединения (например, порт 8998).

Интерфейс ISPConfig: добавление версии PHP

Вкладка настроек PHP-FPM в ISPConfig

Отладка и типичные ошибки

  • Ошибка при ./configure, связанная с IMAP: убедитесь в наличии libc-client и/или создайте символьную ссылку, как показано выше.
  • Ошибки при сборке расширений: установите соответствующие -dev пакеты (libmemcached-dev, libssl-dev, libmcrypt-dev и т.д.).
  • Порт 9000 уже занят: используйте свободный локальный порт (например, 8998) и пропишите его в конфигурации nginx/apache‑коннектора.
  • При проблемах с PECL/PEAR проверьте текущую конфигурацию pear.conf в каталоге /opt/php-5.4.12/etc и используйте pecl -C ./pear.conf для установки в правильный префикс.

Альтернативные подходы

  • Установка через системные пакеты (apt): быстрее и безопаснее, но может не дать нужной минорной версии PHP.
  • Docker-контейнер: создайте образ с необходимой версией PHP и расширениями — изолирует устаревшую версию от основной системы.
  • Использовать сборочный инструмент типа phpbrew для управления несколькими версиями PHP на одной машине.

Когда этот подход не подходит

  • Если вам нужна поддерживаемая и безопасная версия PHP — лучше обновить приложение и использовать PHP 7.x/8.x.
  • Если сервер продуктивный с высокой доступностью, сборка вручную увеличивает риск несовместимостей; предпочтительнее контейнеризация или официальные репозитории.

Роль‑ориентированные чек‑листы

  • Системный администратор:

    • Убедиться в наличии резервных копий.
    • Установить необходимые dev‑пакеты.
    • Выполнить сборку в тестовой среде.
    • Проверить безопасность (права на каталоги, SELinux/AppArmor и т.п.).
  • Девелопер/QA:

    • Проверить совместимость приложения с PHP 5.4.
    • Прогнать тесты на производительность и регрессию.
    • Валидировать подключение расширений (phpinfo(), php -m).

Мини‑методология (быстрый план действий)

  1. Подготовить окружение и зависимости.
  2. Скачать и распаковать исходники.
  3. Сконфигурировать ./configure с нужными опциями.
  4. make && make install.
  5. Скопировать php.ini и php-fpm.conf и настроить listen/include.
  6. Создать init‑скрипт, включить в автозагрузку и запустить сервис.
  7. Установить расширения через pecl/apt и перезагрузить PHP‑FPM.
  8. Добавить версию в ISPConfig и протестировать сайты.

Критерии приёмки

  • PHP‑FPM запускается без ошибок: /etc/init.d/php-5.4.12-fpm start завершает работу успешно.
  • Веб‑сервер (nginx/apache) может соединиться с процессом PHP‑FPM на указанном порту.
  • Установленные расширения загружены (проверяется через php -m или phpinfo()).
  • Приложение работает корректно при использовании новой версии PHP.

Глоссарий (1 строка)

  • PHP‑FPM — FastCGI Process Manager для PHP, управляющий пулом PHP‑воркеров.

Риски и рекомендации безопасности

  • PHP 5.4 не получает обновлений безопасности — ограничьте доступ, используйте файрвол и контейнеризацию.
  • При использовании ionCube убедитесь в целостности скачанного архива и загружаемого модуля.

Краткое резюме

Сборка PHP 5.4.12 вручную даёт гибкость в включении нужных опций и расширений, но несёт дополнительные риски и трудозатраты. Для тестовой или наследуемой среды метод подходит; для новых проектов лучше выбирать поддерживаемые версии PHP.


Важно: Эта инструкция описывает технические шаги и общие рекомендации; адаптируйте параметры конфигурации под требования вашей системы и политики безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сохранить GIF из Twitter
Инструкции

Как сохранить GIF из Twitter

Запуск Windows Mobile 6.5 на ПК
Мобильные ОС

Запуск Windows Mobile 6.5 на ПК

Windows 8 в стиле Windows XP
Настройка Windows

Windows 8 в стиле Windows XP

LinkClump: массовое открытие ссылок в Chrome
Инструменты

LinkClump: массовое открытие ссылок в Chrome

Отключить cmd и Выполнить в Windows
Windows

Отключить cmd и Выполнить в Windows

Metro Social — Facebook в стиле Windows 8
Приложения

Metro Social — Facebook в стиле Windows 8