Сборка PHP 5.6.0beta3 для FastCGI
Введение
Этот документ подробно описывает, как собрать PHP 5.6.0beta3 из исходников с включённой поддержкой FastCGI, настроить и подключить распространённые расширения и зарегистрировать сборку в ISPConfig. Инструкция ориентирована на Debian/Ubuntu-подобные системы и предполагает, что у вас есть root-доступ или sudo.
Краткое определение: FastCGI — протокол, позволяющий запускать долгоживущие процессы интерпретатора (PHP-FPM/CGI) для обработки запросов веб-сервера.
Основные этапы
- Загрузка и распаковка исходников
- Установка зависимостей для сборки
- Конфигурация и сборка PHP с опциями для FastCGI
- Копирование php.ini и включение OPcache
- Установка дополнительных расширений: APCu, memcache, ionCube
- Регистрация версии в ISPConfig и тестирование
Предварительные требования
- Права root или sudo.
- Достаточно свободного дискового пространства для компиляции (несколько сотен мегабайт свободно, лучше 1 ГБ+).
- Система на базе Debian/Ubuntu (apt-get используется в примерах). Если у вас другая Дистрибуция, адаптируйте команды установки пакетов.
Важно: команды и пути в инструкциях совпадают с примером сборки. При изменении опций ./configure пути расширений и имена папок могут отличаться.
1. Загрузка и распаковка исходников
Выполните следующие команды для подготовки директорий и загрузки архива с исходниками:
mkdir /opt/phpfcgi-5.6.0beta3/
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://downloads.php.net/tyrael/php-5.6.0beta3.tar.bz2
tar jxf php-5.6.0beta3.tar.bz2
cd php-5.6.0beta3/2. Установка зависимостей для сборки
Установите инструменты сборки и зависимости, необходимые для успешной компиляции:
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Примечание: некоторые пакеты могут называться по-другому в новых версиях дистрибутивов. Если apt не находит пакет, используйте поиск по имени или пакеты с эквивалентной функциональностью.
Если во время конфигурации появится ошибка, связанная с библиотекой imap, можно создать символическую ссылку на архив libc-client.a. Выполните только при необходимости:
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.aОшибка, при которой это нужно делать:
checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.Если вы не используете –with-imap, эту команду можно не выполнять.
3. Конфигурация и сборка PHP
Сконфигурируйте сборку с набором опций, подходящим для большинства сценариев с FastCGI. Вы можете добавить или убрать опции в зависимости от потребностей.
./configure \
--prefix=/opt/phpfcgi-5.6.0beta3 \
--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 \
--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 \
--enable-opcache \
--enable-cgiПояснения:
- –prefix указывает целевой каталог установки. В примере это /opt/phpfcgi-5.6.0beta3.
- –enable-cgi гарантирует совместимость с FastCGI (CGI-бинарник используется для запуска PHP как FastCGI).
- Некоторые флаги (например, с базами данных или графикой) требуют соответствующих библиотек; если ./configure жалуется — установите недостающие dev-пакеты.
После успешной конфигурации выполните:
make
make test
make installmake test полезен для выявления критических проблем; на сервере в продакшн-среде его можно пропустить, если времени мало, но это снижает риск ошибок.
4. Копирование php.ini и включение Zend OPcache
Скопируйте готовый файл конфигурации php.ini в установленную директорию:
cp /usr/local/src/php5-build/php-5.6.0beta3/php.ini-production /opt/phpfcgi-5.6.0beta3/lib/php.iniЧтобы включить Zend OPcache, откройте файл конфигурации и в конец добавьте загрузку расширения:
vi /opt/phpfcgi-5.6.0beta3/lib/php.iniДобавьте в конец файла:
zend_extension=opcache.soПосле этого можно настроить дополнительные параметры opcache в той же php.ini по необходимости.
5. Установка дополнительных расширений
Ниже приведены примеры установки APCu, memcache и ionCube. Для установки используем PECL/PEAR, которые нужно предварительно установить и инициализировать для локальной сборки.
Установка PEAR и необходимых пакетов:
apt-get -y install php-pear php5-dev
cd /opt/phpfcgi-5.6.0beta3/etc
pecl -C ./pear.conf update-channelsAPCu:
pecl -C ./pear.conf install channel://pecl.php.net/apcu-4.0.4В php.ini добавьте:
extension=apcu.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
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.soionCube (загрузчик для защищённых PHP-скриптов)
- Перейдите во временную директорию:
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- Скопируйте корректный модуль в папку расширений вашей сборки. Путь к директории расширений может отличаться в зависимости от опций сборки и версии API; убедитесь, что путь существует.
Пример:
cp ioncube/ioncube_loader_lin_5.5.so /opt/phpfcgi-5.6.0beta3/lib/php/extensions/no-debug-non-zts-20131226/ioncube.so
vi /opt/phpfcgi-5.6.0beta3/lib/php.iniДобавьте в начало php.ini (перед строкой [PHP]):
zend_extension = /opt/phpfcgi-5.6.0beta3/lib/php/extensions/no-debug-non-zts-20131226/ioncube.so
[PHP]
...Примечание: имя поддиректории no-debug-non-zts-20131226 отражает API версии PHP. Убедитесь, что используете корректный файл ioncube_loader для вашей версии PHP и целевой архитектуры.
6. Регистрация в ISPConfig и настройки FastCGI
В ISPConfig 3.0.5 новая версия PHP конфигурируется в System > Additional PHP Versions.
На вкладке Name укажите произвольное имя (например, PHP 5.6.0beta3). Эта запись появится в настройках сайтов и позволит выбирать эту версию PHP для отдельного веб-сайта.

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

Заполните поля так, чтобы ISPConfig знал путь к исполняемому файлу php-cgi/php-fpm и к директории с php.ini.
7. Тестирование и проверка работоспособности
- Проверьте, что исполняемый файл PHP доступен и это правильная версия:
/opt/phpfcgi-5.6.0beta3/bin/php -vСоздайте phpinfo-файл в корне сайта и откройте его через браузер, чтобы убедиться, что версия PHP и расширения видны.
Запустите тесты сборки (если не делали ранее):
make test- Проверьте логи веб-сервера и логи PHP при запуске сайтов через FastCGI на предмет ошибок загрузки расширений.
Критерии приёмки
- php -v возвращает PHP 5.6.0beta3 и отсутствие фатальных ошибок.
- phpinfo() показывает включённые расширения: opcache, apcu, memcache (если установлены), ionCube (если установлен).
- Веб-сайты, использующие новую версию, работают корректно в тестовой среде.
- Логи сервера не содержат критических ошибок при обслуживании страниц на новой версии.
Резервирование и откат
- До начала сборки снимите бэкап конфигураций веб-сервера и текущих php.ini.
- Если новая версия вызывает проблемы, вернитесь к предыдущей версии в ISPConfig или переставьте символьные ссылки на старую сборку.
- Для полного удаления новой сборки достаточно удалить каталог /opt/phpfcgi-5.6.0beta3 и откатить настройки в ISPConfig.
Чек-листы по ролям
Администратор системы:
- Убедиться в наличии прав root.
- Проверить свободное дисковое пространство.
- Установить пакеты build-essential и зависимости.
- Контролировать логи во время первого запуска.
DevOps-инженер:
- Настроить CI/скрипты для сборки при необходимости.
- Обеспечить управление конфигурацией (Ansible/Chef/Puppet).
- Подготовить тестовую среду и набор тестов для регрессий.
Разработчик:
- Протестировать ключевые сценарии на тестовом сайте.
- Проверить совместимость кода с PHP 5.6 (устаревшие функции, предупреждения).
Методология миграции (мини-метод)
- Подготовить тестовый сервер или контейнер.
- Собрать PHP и установить расширения.
- Подключить новую версию в ISPConfig и назначить тестовый сайт.
- Прогнать автоматические тесты и ручную проверку функционала.
- Мониторить логи и показатели в течение согласованного окна.
- Выполнить плавное переключение трафика и откат при проблемах.
Тестовые сценарии и приёмка
- Проверка вывода phpinfo и списка расширений.
- Прогон набора unit/integration тестов для ключевых сайтов.
- Нагрузочное тестирование на тестовой среде для проверки поведения FastCGI процессов.
- Тесты корректности обработки сессий, кеширования (APCu) и работы с базой данных.
Распространённые проблемы и их решения
Проблема: ./configure сообщает об отсутствии библиотеки imap. Решение: установить libc-client2007e-dev и при необходимости создать симлинк на libc-client.a.
Проблема: расширение не загружается после установки через pecl. Решение: проверьте, что extension_dir в php.ini соответствует каталогу, куда pecl установил модуль, и что имя .so совпадает.
Проблема: ionCube не загружается. Решение: используйте загрузчик, совместимый с API вашей версии PHP, проверяйте путь и права доступа.
Совместимость и заметки по версиям
- PHP 5.6 имеет устаревшие возможности и уязвимости со временем; разумно планировать миграцию на поддерживаемую ветку PHP.
- Параметры сборки и пути к расширениям зависят от конфигурации компиляции и версии API расширений (no-debug-non-zts-
).
Небольшой глоссарий
- php.ini — основной файл конфигурации PHP.
- OPcache — встроенный кеш байт-кода Zend для ускорения выполнения PHP.
- APCu — пользовательский кеш данных для PHP.
- ionCube — загрузчик для защищённых и зашифрованных PHP-скриптов.
- PECL/PEAR — менеджеры пакетов для расширений PHP.
Шаблон проверки готовности к релизу
- Список изменений и скриптов сборки сохранён в репозитории управления конфигурацией.
- Выполнены тесты интеграции и регрессии.
- Согласовано окно релиза и план отката.
Резюме
Процесс сборки PHP 5.6.0beta3 из исходников включает подготовку окружения, установку зависимостей, конфигурацию с нужными опциями, компиляцию и установку. Затем необходимо скопировать php.ini, включить OPcache и при желании установить дополнительные расширения через PECL. После этого зарегистрируйте новую версию в ISPConfig и тщательно протестируйте в тестовой среде перед выпуском в продакшн.
Ссылки
- PHP: http://www.php.net/
- ISPConfig: http://www.ispconfig.org/
- Debian: http://www.debian.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента