Сборка 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). Эта версия станет доступна в настройках сайтов.

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

Отладка и частые ошибки
- Ошибка 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 параллельно без ручной компиляции.
Когда не собирать из исходников: если важна поддержка безопасности и обновлений — используйте репозитории с поддерживаемыми пакетами.
Мини‑методология для воспроизводимой сборки
- Подготовить чистую систему или контейнер. 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) для безопасности и удобства поддержки.
Ссылки
- PHP: http://www.php.net/
- ISPConfig: http://www.ispconfig.org/
- CentOS: http://www.centos.org/
Об авторе
Falko Timme — владелец Timme Hosting (ultra-fast nginx web hosting). Ведущий поддерживающий HowtoForge (с 2005) и один из разработчиков ядра ISPConfig (с 2000). Вносил вклад в книгу O’Reilly “Linux System Administration”.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента