Сборка 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-channelsAPC:
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 = 5Memcache:
pecl -C ./pear.conf install memcacheДобавьте в php.ini:
extension=memcache.soMemcached (с использованием libmemcached):
apt-get install libmemcached-dev
pecl -C ./pear.conf install memcachedДобавьте в php.ini:
extension=memcached.soionCube 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”) — это имя будет отображаться в настройках сайтов.

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

Отладка и типичные ошибки
- Ошибка “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.
- На современных дистрибутивах может не хватать старых библиотек; сборка может быть сложнее из‑за несовместимостей.
Альтернативные подходы
- Использовать контейнеры (Docker) с образом, содержащим PHP 5.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 не получает обновлений безопасности, поэтому изолируйте окружение.
Тестовые кейсы (минимум)
- Тест phpinfo(): проверка версии и загруженных модулей.
- Сценарий подключения к БД (MySQL/Postgres) — проверить CRUD операции.
- Проверка работы APC (кеширование), memcache/memcached — записать и прочитать значение.
- Загрузка и исполнение ionCube‑зашифрованного файла (если используется).
- Проверка обработки больших POST/FILE upload (конфиги post_max_size, upload_max_filesize).
Миграция и совместимость
- Обратите внимание на API расширений и ABI (номер папки no-debug-non-zts-20090626). При обновлении на другую версию PHP пути и имена каталогов расширений изменятся.
- На современных системах некоторые dev‑пакеты для старых библиотек могут быть недоступны; используйте контейнеры или chroot для повторяемости сборки.
Краткая методология (мини‑метод)
- Подготовка окружения и бэкапов конфигураций.
- Сборка в изолированном каталоге (/opt/…).
- Установка и базовая конфигурация php.ini.
- Установка необходимых расширений через PECL/ручную установку.
- Интеграция с вебсервером/панелью управления и запуск smoke‑тестов.
- Мониторинг и план миграции на поддерживаемую версию.
Глоссарий (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; это полезно для совместимости старых приложений.
- Следите за безопасностью: используйте изоляцию и ограничивайте доступ.
- Рассмотрите контейнеризацию или миграцию как более устойчивую стратегию в долгосрочной перспективе.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента