Сборка PHP 5.3.22 с поддержкой FastCGI
Введение
Ниже приведён пошаговый процесс сборки PHP 5.3.22 из исходников для использования через FastCGI. Инструкция подходит для RPM-базированных дистрибутивов (yum). Все команды выполняйте от имени пользователя с привилегиями root или через sudo.
Определения: FastCGI — протокол взаимодействия веб-сервера и внешнего процесса (PHP-CGI/PHP-FPM). APC, memcache, memcached, ionCube — распространённые расширения и загрузчики для PHP.
Требования и подготовка
- Создайте папки для сборки и установки:
mkdir /opt/phpfcgi-5.3.22
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build- Скачайте и распакуйте архив с исходниками PHP 5.3.22:
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/- Установите группы и пакеты, необходимые для сборки (список длинный — приведён полностью):
yum groupinstall 'Development Tools'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Примечание: список зависит от опций, которые вы укажете в ./configure. Если будете использовать другие флаги, могут потребоваться дополнительные -devel пакеты.
Конфигурация и сборка
Запустите конфигуратор. Рекомендуется сначала посмотреть все доступные опции:
./configure --helpПример конфигурации, используемой в оригинальной инструкции (настройте по своим требованиям):
./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 \
--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 (PHP-CGI). Если вы хотите использовать PHP-FPM, дополнительно проверьте поддержку –enable-fpm (в старых релизах флаг мог отличаться).
Сборка и установка:
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)
Вы можете установить расширения APC, memcache и memcached через PECL. Для этого требуется php-pear и инициализация PEAR/PECL с конфигурацией, расположенной рядом с установленной версией PHP.
- Установить php-pear (системный пакет):
yum install php-pear- Перейти в директорию конфигурации новой сборки:
cd /opt/phpfcgi-5.3.22/etc- Обновить каналы PEAR/PECL (используя локальный pear.conf):
pecl -C ./pear.conf update-channelsAPC (пример установки):
pecl -C ./pear.conf install apcПримите значения по умолчанию при установке. Затем откройте php.ini и добавьте:
vi /opt/phpfcgi-5.3.22/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 |
Примечание: при проблемах с mmap попробуйте закомментировать apc.mmap_file_mask или использовать рекомендованные параметры для вашего дистрибутива.
Установка memcache:
pecl -C ./pear.conf install memcacheДобавьте в php.ini:
| [...] extension=memcache.so |
Установка memcached (клиентская библиотека libmemcached + расширение PECL):
yum install libmemcached-devel
pecl -C ./pear.conf install memcachedДобавьте в php.ini:
| [...] extension=memcached.so |
Установка ionCube Loader
- Перейдите в /tmp и скачайте пакет для архитектуры сервера (x86_64 или x86). Например, для 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Для x86:
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz- Скопируйте соответствующий loader в директорию расширений PHP и подключите его в начале 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], добавьте:
| zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so [PHP] [...] |
После этого перезапустите FastCGI-процесс (или веб-сервер), чтобы загрузчик вступил в силу.
Интеграция в ISPConfig 3.0.5
В ISPConfig можно зарегистрировать новую версию PHP в System > Additional PHP Versions. На вкладке Name укажите имя (например, PHP 5.3.22). Эта версия появится в настройках сайтов в ISPConfig.

Перейдите на вкладку FastCGI Settings и заполните поля конфигурации. Вкладку PHP-FPM можно оставить пустой, если используете классический FastCGI:

Важно: корректно указывайте путь к бинарнику PHP и php.ini в настройках ISPConfig, чтобы сервер запускал именно собранную версию.
Отладка и частые ошибки
- Ошибка при конфигурации: значит, отсутствует -devel пакет для одной из опций. Проверьте вывод ./configure и установите недостающие зависимости.
- Расширение не загружается: убедитесь, что путь и имя .so совпадают с указанными в php.ini и что сборка расширения прошла успешно.
- Проблемы с правами: проверьте владельца/группу файлов и директории, особенно если используете –with-fpm-user/–with-fpm-group.
- Несовместимость библиотек (libdir): флаг –with-libdir=lib64 нужен на x86_64 системах; на 32-битных — не используйте его.
Альтернативные подходы
- Использовать дистрибутивные пакеты RPM/DEB: быстрее и безопаснее с точки зрения обновлений, но не всегда доступны старые версии.
- Собрать только модуль PHP-FPM (если нужен именно FPM), а не CGI.
- Использовать контейнеры (Docker) с заранее собранным образом PHP 5.3.22 — удобно для изоляции и отката.
Когда этот способ не подойдёт
- Если вам нужна поддержка безопасности и обновлений — PHP 5.3 EOL, лучше мигрировать на поддерживаемую версию.
- На хостингах с ограниченным доступом к установке системных пакетов или без возможности запускать свои бинaрные CGI-процессы.
Чеклист перед вводом в эксплуатацию
- Проверить, что php -v указывает на /opt/phpfcgi-5.3.22 (или соответствующий путь в конфиге FastCGI).
- Убедиться, что phpinfo() отображает установленные расширения (APC, memcached, ionCube).
- Настроить резервное копирование php.ini и списка установленных расширений.
- Провести нагрузочное тестирование на тестовой среде (в особенности если меняли параметры памяти для APC).
- Обновить документацию и конфигурацию в ISPConfig.
Снижение рисков и безопасность
- Не используйте устаревшие версии PHP в публичных сервисах без строгого контроля доступа.
- Отключите ненужные расширения. Минимизируйте набор установленных модулей.
- Отключите display_errors в production конфиге php.ini.
- Регулярно проверяйте журналы сервера и FastCGI-процесса.
Краткая терминологическая шпаргалка (1 строка)
- FastCGI — протокол для запуска внешних процессов (PHP) веб-сервером.
- PECL — репозиторий расширений PHP; используется для установки модулей.
- ionCube — загрузчик зашифрованных PHP-скриптов.
Критерии приёмки
- PHP 5.3.22 успешно запускается как FastCGI-процесс и обслуживает запросы.
- Отклик приложения соответствует ожидаемому поведению на тестовой нагрузке.
- Все требуемые расширения загружены и работают (APC, memcache(s), ionCube).
Итог
Эта инструкция даёт исчерпывающий процесс сборки и установки PHP 5.3.22 для FastCGI, включая необходимые зависимости и установку часто используемых расширений. Для продакшена рассматривайте более современные версии PHP и контейнеризацию. Если нужны подсказки по конкретным ошибкам на этапе ./configure или make — приложите вывод ошибок, и я подскажу следующий шаг.
Примечание: безопасность и поддержка важнее обратной совместимости. По возможности планируйте миграцию на поддерживаемые версии PHP.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента