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

Сборка PHP 5.3.22 (FastCGI)

• 6 min read • Серверы • Обновлено 18 Nov 2025
Сборка PHP 5.3.22 для FastCGI
Сборка PHP 5.3.22 для FastCGI

Краткий обзор

Эта инструкция показывает, как собрать и установить PHP 5.3.22 в префикс /opt/phpfcgi-5.3.22 с поддержкой FastCGI/CGI. Процесс включает подготовку зависимостей, конфигурацию сборки, компиляцию и установку популярных расширений (APC, memcache, memcached, ionCube). Также показано, как зарегистрировать версию PHP в ISPConfig.

Важно: PHP 5.3.22 — устаревшая версия. Используйте её только для совместимости с legacy‑приложениями и в изолированных средах (контейнеры, виртуальные машины). По возможности мигрируйте на поддерживаемые версии PHP.

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

Коротко — на целевой машине должны быть установлены набор инструментов сборки и dev‑пакеты библиотек, которые вы планируете использовать (базы данных, imap, ssl и т.д.). Ниже — команды для Debian/Ubuntu‑производных систем.

Создайте каталоги для установки и исходников:

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

cd php-5.3.22/

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

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.a:

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 \
--prefix=/opt/phpfcgi-5.3.22 \
--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 \
--enable-exif \
--enable-bcmath \
--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 \
--with-xmlrpc \
--with-xsl \
--enable-cgi

Примечание: флаг –enable-cgi обеспечивает совместимость с FastCGI. Если вы планируете использовать php-fpm из пакета, вместо –enable-cgi можно добавить соответствующие опции, но для данной инструкции мы собираем CGI/FCGI‑совместимый билд.

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

После успешного конфигурирования соберите и установите PHP:

make
make install

Скопируйте файл php.ini для продакшн‑настроек:

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

Установка распространённых расширений

Вы можете установить модули APC, memcache, memcached через PECL/PEAR. Сначала установите php-pear и инициализируйте каналы PEAR в каталоге etc вашего билда:

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

APC:

pecl -C ./pear.conf install apc

Примите значения по умолчанию. Затем откройте php.ini и добавьте:

vi /opt/phpfcgi-5.3.22/lib/php.ini

В конец файла добавьте/отредактируйте настройки APC:

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 (с использованием libmemcached):

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

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

extension=memcached.so

ionCube Loader:

cd /tmp

Скачайте и распакуйте пакет ionCube для вашей архитектуры (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:

cp ioncube/ioncube_loader_lin_5.3.so /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/phpfcgi-5.3.22/lib/php.ini

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

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

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

В ISPConfig 3.0.5 новая версия PHP настраивается в System > Additional PHP Versions. На вкладке “Name” укажите имя (например, “PHP 5.3.22”) — это имя будет отображаться в настройках сайтов.

Настройка новой версии PHP в ISPConfig — вкладка «Имя»

Во вкладке FastCGI Settings (вкладку PHP-FPM можно оставить пустой) заполните поля, необходимые для подключения к вашему бинарнику/скрипту FastCGI:

Параметры FastCGI для новой версии PHP в ISPConfig

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

  • Ошибка “Cannot find imap library (libc-client.a)” — создайте символьную ссылку на libc-client.a (см. выше).
  • Ошибки «missing header» или «cannot find library» — установите соответствующие -dev пакеты (libxml2-dev, libssl-dev и т.д.).
  • Если ./configure не находит jpeg/png, укажите путь через –with-jpeg-dir и –with-png-dir.
  • Для 64‑битных систем учтите вариант –with-libdir=/lib/x86_64-linux-gnu или аналогичный путь.

Совет: сохраняйте лог конфигурации и вывода make, чтобы легче было диагностировать проблемы:

./configure ... 2>&1 | tee configure.log
make 2>&1 | tee make.log

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

  • Когда безопасность и поддержка критичны: использование неподдерживаемой версии PHP создаёт риски безопасности. Предпочтительнее обновить приложение.
  • Когда необходима быстрая развёртка и управление пакетами: лучше использовать официальные пакеты дистрибутива или контейнеры Docker.
  • На современных дистрибутивах может не хватать старых библиотек; сборка может быть сложнее из‑за несовместимостей.

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

  1. Использовать контейнеры (Docker) с образом, содержащим PHP 5.3 — изолирует среду и упрощает откат.
  2. Установить через сторонние репозитории (если они доступны для вашей дистрибуции) — менее трудоёмко, но требует доверия к репозиторию.
  3. Использовать chroot/VM для запуска legacy‑среды отдельно от основной системы.

Чек‑лист для администратора перед запуском в проде

  • Собран бинарник успешно проходит smoke‑тесты на тестовом сервере.
  • php.ini содержит минимальный набор безопасных настроек (disable_functions, display_errors=Off).
  • Проверены права доступа на /opt/phpfcgi-5.3.22 (недопустимо давать права на запись всем пользователям).
  • Мониторинг и резервное копирование настроек и расширений настроены.
  • Если используется ionCube/PECL‑модули, проверена совместимость версий API (ZTS/non‑ZTS).

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

  • PHP запускается через FastCGI и обрабатывает тестовый скрипт phpinfo() корректно.
  • Загруженные расширения (APC, memcache/memcached, ionCube) отображаются в phpinfo().
  • Приложение работает без критических ошибок в течение тестового периода (например, 24 часа для long‑running тестов).
  • Отсутствуют ошибки в логах при старте и загрузке расширений.

Советы по безопасности и эксплуатации

  • Отключите display_errors в php.ini и ведите логи ошибок в отдельный файл.
  • Ограничьте набор функций через disable_functions (exec, shell_exec, system и т.п.), если приложение не требует их.
  • Используйте отдельного пользователя/группу для процессов FCGI/PHP, минимизируйте права на каталоги приложений.
  • Регулярно проверяйте уязвимости: PHP 5.3 не получает обновлений безопасности, поэтому изолируйте окружение.

Тестовые кейсы (минимум)

  1. Тест phpinfo(): проверка версии и загруженных модулей.
  2. Сценарий подключения к БД (MySQL/Postgres) — проверить CRUD операции.
  3. Проверка работы APC (кеширование), memcache/memcached — записать и прочитать значение.
  4. Загрузка и исполнение ionCube‑зашифрованного файла (если используется).
  5. Проверка обработки больших POST/FILE upload (конфиги post_max_size, upload_max_filesize).

Миграция и совместимость

  • Обратите внимание на API расширений и ABI (номер папки no-debug-non-zts-20090626). При обновлении на другую версию PHP пути и имена каталогов расширений изменятся.
  • На современных системах некоторые dev‑пакеты для старых библиотек могут быть недоступны; используйте контейнеры или chroot для повторяемости сборки.

Краткая методология (мини‑метод)

  1. Подготовка окружения и бэкапов конфигураций.
  2. Сборка в изолированном каталоге (/opt/…).
  3. Установка и базовая конфигурация php.ini.
  4. Установка необходимых расширений через PECL/ручную установку.
  5. Интеграция с вебсервером/панелью управления и запуск smoke‑тестов.
  6. Мониторинг и план миграции на поддерживаемую версию.

Глоссарий (1‑строчные определения)

  • FastCGI — протокол для взаимодействия веб‑сервера и процесса приложения (PHP) для повышения производительности.
  • PECL/PEAR — репозиторий расширений/пакетов для PHP.
  • ionCube — загрузчик и инструмент для исполнения зашифрованных PHP‑скриптов.
  • APC — кеш опкода/пользовательский кеш для PHP.

Сравнение: ручная сборка vs пакеты (какое выбрать)

  • Ручная сборка: гибкость, контроль версий, но требует усилий по поддержке и безопасности.
  • Пакеты дистрибутива: удобство, автообновления, но возможны более старые/неподходящие конфиги.

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

Собрали инструкцию по компиляции PHP 5.3.22 с поддержкой FastCGI для случаев, когда требуется сохранить работу legacy‑приложений. Руководство включает подготовку зависимостей, полный набор опций ./configure, сборку, установку популярных расширений (APC, memcache, memcached, ionCube) и интеграцию в ISPConfig. Также добавлены рекомендации по безопасности, тестовые кейсы и альтернативные подходы (Docker, chroot). Используйте этот билд только в изолированных средах и планируйте миграцию на поддерживаемые версии PHP.

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

  • PHP 5.3.22 можно успешно собрать и настроить для FastCGI; это полезно для совместимости старых приложений.
  • Следите за безопасностью: используйте изоляцию и ограничивайте доступ.
  • Рассмотрите контейнеризацию или миграцию как более устойчивую стратегию в долгосрочной перспективе.
Поделиться: 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 быстро