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

Сборка PHP 5.4.12 (FastCGI)

• 5 min read • DevOps • Обновлено 26 Nov 2025
Сборка PHP 5.4.12 (FastCGI) — руководство
Сборка PHP 5.4.12 (FastCGI) — руководство

Введение

Это руководство показывает, как собрать PHP 5.4.12 из исходников и подготовить его для работы через FastCGI. Подходит для систем на базе RHEL/CentOS с yum. Краткое определение: FastCGI — протокол для запуска интерпретаторов (например, PHP) как отдельных процессов, повышающий производительность по сравнению с CGI.

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

Содержание

  • Требования
  • Загрузка и распаковка
  • Установка зависимостей
  • Конфигурация, сборка и установка
  • Настройка php.ini
  • Установка модулей (APC, memcache, memcached, ionCube)
  • Интеграция с ISPConfig
  • Отладка и частые ошибки
  • Альтернативные подходы
  • Рекомендации по безопасности
  • Контроль приёмки
  • Сводка

Предварительные требования

  • root или пользователь с sudo-привилегиями
  • Доступ в интернет для загрузки исходников и пакетов
  • ~1–2 ГБ свободной оперативной памяти для процесса компиляции
  • Компилятор и инструменты разработки

Минимальная команда для установки группы инструментов разработки и библиотек (пример для CentOS):

yum groupinstall 'Development Tools'

Установите набор библиотек, необходимых для большинства расширений PHP:

yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel

Загрузка и распаковка исходников

Выполните команды:

mkdir /opt/phpfcgi-5.4.12
mkdir -p /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/

Конфигурация сборки

Запустите ./configure с параметрами, подходящими для вашей системы. Пример конфигурации, использованной в исходном руководстве:

./configure --prefix=/opt/phpfcgi-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 \
 --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=apache \
 --with-fpm-group=apache \
 --with-libdir=lib64 \
 --enable-ftp \
 --with-imap \
 --with-imap-ssl \
 --with-kerberos \
 --with-gettext \
 --enable-cgi

Примечание: ключ –enable-cgi обеспечивает совместимость с FastCGI. Если вы используете альтернативную команду ./configure, могут потребоваться дополнительные dev-пакеты.

Сборка и установка

Запустите:

make
make install

Скопируйте готовый php.ini в каталог установки:

cp /usr/local/src/php5-build/php-5.4.12/php.ini-production /opt/phpfcgi-5.4.12/lib/php.ini

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

Установка PEAR/PECL (используется для некоторых расширений):

yum install php-pear
cd /opt/phpfcgi-5.4.12/etc
pecl -C ./pear.conf update-channels

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

pecl -C ./pear.conf install apc

Добавьте в /opt/phpfcgi-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 (клиентской расширения):

yum install libmemcached-devel
pecl -C ./pear.conf install memcached

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

extension=memcached.so

Установка ionCube Loader

Временно перейдите в /tmp и загрузите соответствующий пакет для архитектуры x86_64 или x86.

Для x86_64:

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

Для x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

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

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

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

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

Интеграция в ISPConfig

В ISPConfig (версия 3.0.5 в исходнике) новая версия PHP настраивается в System > Additional PHP Versions.

На вкладке “Name” укажите имя (например, PHP 5.4.12). Эта версия станет доступна в настройках сайтов.

Настройка дополнительной версии PHP в ISPConfig

Перейдите на вкладку FastCGI Settings и заполните поля так, как требуется вашей установке. Вкладку PHP-FPM можно оставить пустой, если вы используете FastCGI.

Вкладка настроек FastCGI в ISPConfig

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

  • Ошибка configure: missing header — значит не установлены соответствующие -devel пакеты. Установите недостающие библиотеки и повторите.
  • Ошибки ссылок на библиотеку при make — проверьте переменные окружения LD_LIBRARY_PATH и наличие /usr/lib64 или /usr/lib.
  • make не проходит из-за недостатка памяти — увеличьте swap или соберите на машине с большим объёмом RAM.
  • Расширение не загружается — проверьте путь к расширениям в php.ini и убедитесь, что файл .so существует и имеет правильные права.

Советы по отладке:

  • После установки выполните /opt/phpfcgi-5.4.12/bin/php -v для проверки версии.
  • Создайте phpinfo() через веб-интерфейс, чтобы убедиться в загрузке расширений и правильности конфигурации.
  • Логи: смотрите логи ошибок веб-сервера и лог сборки (выход make).

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

  • Использовать пакеты из репозиториев (Remi, EPEL) — быстрее и безопаснее, так как пакеты уже собраны.
  • Контейнеризация: собрать требуемую версию PHP внутри Docker-контейнера, изолировав окружение.
  • Software Collections (SCL) или IUS — позволяют иметь несколько версий PHP параллельно без ручной компиляции.

Когда не собирать из исходников: если важна поддержка безопасности и обновлений — используйте репозитории с поддерживаемыми пакетами.

Мини‑методология для воспроизводимой сборки

  1. Подготовить чистую систему или контейнер. 2. Задокументировать версии всех dev-библиотек. 3. Хранить конфигурационный скрипт ./configure. 4. Сохранять php.ini-production и вносить изменения через отдельный файл php.d/*.ini. 5. Автоматизировать сборку через Ansible/Makefile.

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

  • /opt/phpfcgi-5.4.12/bin/php -v возвращает “PHP 5.4.12”
  • phpinfo() показывает загруженные расширения (apc, memcache/memcached, ionCube)
  • Веб-сервер запускает сайт через FastCGI и ответ HTTP 200
  • Нет ошибок компиляции и отсутствующих символов при запуске

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

Администратор:

  • Проверил наличие всех -devel пакетов.
  • Собрал и установил PHP, настроил php.ini.
  • Настроил интеграцию в ISPConfig.

Разработчик:

  • Проверил работоспособность phpinfo().
  • Проверил загрузку критичных расширений.
  • Прогнал ключевые юнит/интеграционные тесты на новом PHP.

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

  • Не используйте PHP 5.4 в публичных продуктах без дополнительных мер защиты.
  • Ограничьте доступ к phpinfo(), выключите display_errors в production.
  • Используйте chroot/контейнеризацию для изоляции старых версий.
  • Обновляйте система-библиотеки (openssl и т.п.) и минимизируйте набор загруженных расширений.

Шаблон команды конфигурации (cheat sheet)

./configure --prefix=/opt/phpfcgi-5.4.12 \
 --with-mysql --with-mysqli --with-pdo-mysql \
 --with-openssl --with-curl --with-gd --enable-mbstring \
 --enable-sockets --with-zlib --enable-zip --enable-cgi

Краткая справка (fact box)

  • Версия PHP: 5.4.12
  • Цель: FastCGI/CGI
  • Место установки: /opt/phpfcgi-5.4.12
  • Основные расширения: APC, memcache, memcached, ionCube

Когда это решение не годится

  • Нужна поддержка безопасности и патчей — лучше перейти на поддерживаемую версию (7.x или 8.x).
  • Высокая нагрузка и современный стек — рекомендуются PHP-FPM и актуальная версия языка.

Короткое объявление для команды (100–200 слов)

Собрали и установили PHP 5.4.12 в /opt/phpfcgi-5.4.12 с поддержкой FastCGI и основными расширениями (APC, memcache, memcached, ionCube). Версия добавлена в ISPConfig для возможности выборочной привязки к хостам. Это временная или совместимостная мера; планируем изолировать экземпляры и по возможности мигрировать сервисы на актуальные версии PHP.

Сводка

  • Сборка из исходников даёт контроль, но требует ручной поддержки.
  • Обязательно документируйте конфигурацию и используйте автоматизацию для воспроизводимости.
  • Рассмотрите альтернативы (пакеты, Docker, SCL) для безопасности и удобства поддержки.

Ссылки

Об авторе

Falko Timme — владелец Timme Hosting (ultra-fast nginx web hosting). Ведущий поддерживающий HowtoForge (с 2005) и один из разработчиков ядра ISPConfig (с 2000). Вносил вклад в книгу O’Reilly “Linux System Administration”.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро