Сборка PHP 5.4.12 (FastCGI)
Введение
Этот материал объясняет, как собрать и установить PHP 5.4.12 из исходников с поддержкой FastCGI. Поддержка FastCGI позволяет запускать PHP в отдельном процессе (PHP-FPM или CGI), что улучшает производительность и управляемость в производственных окружениях.
Важно: PHP 5.4 давно не поддерживается официально — используйте этот гайд только для совместимости или старых проектов. По возможности планируйте миграцию на поддерживаемые версии PHP.
Краткие определения
- FastCGI: протокол для запуска приложений (как PHP) в отдельном процессе, повышающий производительность.
- PHP-FPM: реализация FastCGI для PHP, дающая управление рабочими процессами и пулом соединений.
Требования и примечания
- Тестовая система: Ubuntu/Debian-подобная (apt-get).
- Доступ root или sudo.
- Места установки в примере: /opt/phpfcgi-5.4.12 и /usr/local/src/php5-build — вы можете изменить их по желанию.
Важно: компиляция PHP может потребовать дополнительных библиотек в зависимости от выбранных опций ./configure. Если ./configure сообщает об отсутствующих библиотеках, установите соответствующие dev-пакеты и повторите конфигурацию.
1. Скачивание и распаковка
Создайте каталоги и скачайте источник:
mkdir /opt/phpfcgi-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/2. Установка зависимостей для сборки
Установите набор пакетов, необходимых для сборки и привязки к системным библиотекам:
apt-get install build-essential apt-get build-dep php5apt-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)”.
3. Конфигурация и сборка
Запустите ./configure с опциями, нужными для вашего окружения. Ниже приведён пример, используемый для сборки со множеством распространённых расширений. Отредактируйте список опций по потребностям.
./configure --helpЗатем конфигурация:
./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 \
--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-cgiПоследняя опция –enable-cgi позволяет использовать этот билд с FastCGI.
Сборка и установка:
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.ini4. Установка дополнительных расширений
Вы можете устанавливать расширения APC, memcache, memcached через PECL. Сначала установите и инициализируйте PEAR/PECL для нового билда.
apt-get -y install php-pearcd /opt/phpfcgi-5.4.12/etcpecl -C ./pear.conf update-channelsAPC
pecl -C ./pear.conf install apcПримите значения по умолчанию. Затем откройте конфигурационный php.ini:
vi /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 |
Примечание: подберите apc.shm_size в соответствии с объёмом доступной оперативной памяти.
Memcache
Установка:
pecl -C ./pear.conf install memcache Добавьте в php.ini:
| [...] extension=memcache.so |
Memcached
Установка зависимостей и расширения:
apt-get install libmemcached-devln -s /usr/include/libmemcached /usr/include/libmemcached-1.0pecl -C ./pear.conf install memcachedДобавьте в php.ini:
| [...] extension=memcached.so |
ionCube Loader
Скачайте и распакуйте корректный пакет для вашей архитектуры (x86_64 или x86):
cd /tmpДля 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.4.so /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
vi /opt/phpfcgi-5.4.12/lib/php.iniДобавьте строку перед разделом [PHP]:
| zend_extension = /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so [PHP] [...] |
5. Настройка в ISPConfig
В ISPConfig 3.0.5 новая версия PHP настраивается в System > Additional PHP Versions. На вкладке Name укажите метку (например, PHP 5.4.12) — это имя будет видно в настройках веб-сайта.

ALT: Скриншот окна добавления новой версии PHP в ISPConfig с полями имени и пути
На вкладке FastCGI Settings заполните параметры пула и исполняемого файла FastCGI. Вкладку PHP-FPM можно оставить пустой, если используете CGI только для FastCGI.

ALT: Скриншот вкладки настроек FastCGI в ISPConfig с примерами параметров пула
6. Проверка установки
- Запустите /opt/phpfcgi-5.4.12/bin/php -v чтобы убедиться в версии и загруженных расширениях.
- Создайте тестовую страницу phpinfo() в сайте, подключённом к этой версии PHP, чтобы проверить путь к php.ini и активные расширения.
- Проверьте логи веб-сервера и PHP-FPM/CGI для ошибок при старте.
7. Безопасность и практические рекомендации
- Патчи безопасности для PHP 5.4 отсутствуют — по возможности используйте контейнеризацию, изоляцию приложений или VPN-сети, если вынуждены оставаться на устаревшей версии.
- Ограничьте права файлов и каталогов: исполняемый PHP и расширения должны быть доступны только root и пользователю веб-пула.
- Регулярно мониторьте логи на предмет необычной активности и ошибок.
Мини-методология: последовательность действий
- Подготовка окружения и резервные копии.
- Установка зависимостей.
- Конфигурация ./configure под ваши нужды.
- make && make install.
- Настройка php.ini и расширений.
- Интеграция с ISPConfig и тестирование.
- Мониторинг и фолбэки.
Критерии приёмки
- php -v возвращает 5.4.12 и путь /opt/phpfcgi-5.4.12.
- phpinfo() показывает активные расширения (APC, memcache/memcached, ionCube если установлены).
- Веб-приложение успешно обрабатывает запросы под этой версией без фатальных ошибок.
Контрольные сценарии (Test cases)
- Запустить простую страницу с phpinfo() и убедиться, что display_errors выключён в прод-окружении.
- Проверить работу APC: кеширование простого массива и чтение из кэша.
- Симулировать пиковую нагрузку (например, ab или siege) и отслеживать использование памяти и процессора.
Чек-лист по ролям
- Инженер DevOps: убедиться в корректной компиляции, автозапуске процессов FastCGI и логировании.
- Разработчик: проверить совместимость кода с PHP 5.4 (устаревшие функции, mysql_* и т.п.).
- Системный админ: настроить резервное копирование /opt и конфигураций, следить за обновлениями системы.
Совместимость и миграция
- Старые расширения (например, mysql) присутствуют, но помните про их устаревание. Рассмотрите миграцию на mysqli или PDO.
- Для переноса настроек с другой системы сверяйте пути к библиотекам и символические ссылки (libc-client.a, libmemcached и т.д.).
Глоссарий (1 строка на термин)
- php.ini — главный файл конфигурации PHP.
- PECL/PEAR — менеджеры пакетов для PHP-расширений и библиотек.
- APC — кеширование opcode и пользовательских данных в памяти.
Когда этот подход не подходит (контрпример)
- Если требуется поддержка безопасности и патчей — лучше использовать новую ветку PHP.
- Для облачных управляемых платформ сборка из исходников может быть не нужна — используйте официальные пакеты или контейнеры.
Сводка
- Эта инструкция показывает полный цикл: от скачивания исходников до интеграции с ISPConfig и установки популярных расширений.
- Всегда тестируйте в стадии staging прежде чем развертывать в production.
Ссылки
- PHP: http://www.php.net/
- ISPConfig: http://www.ispconfig.org/
- Ubuntu: http://www.ubuntu.com/
Об авторе
Falko Timme — владелец Timme Hosting (ultra-fast nginx web hosting), ведущий поддерживающий HowtoForge (с 2005) и один из ключевых разработчиков ISPConfig (с 2000). Он также участвовал в книге O’Reilly «Linux System Administration».
Похожие материалы
Устранение ошибки Epson 1131: полное руководство
Отключить Bluetooth в Arch Linux быстро и безопасно
Windows netstat: прослушиваемые порты
Ограничения ресурсов в Kubernetes: CPU, память и хранилище
Вредоносное ПО в облаке: что это и как защититься