Гид по технологиям

Сборка PHP 5.4.12 (FastCGI)

5 min read PHP Обновлено 22 Nov 2025
Сборка PHP 5.4.12 для FastCGI
Сборка 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 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)”.

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.ini

4. Установка дополнительных расширений

Вы можете устанавливать расширения APC, memcache, memcached через PECL. Сначала установите и инициализируйте PEAR/PECL для нового билда.

apt-get -y install php-pear
cd /opt/phpfcgi-5.4.12/etc
pecl -C ./pear.conf update-channels

APC

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-dev
ln -s /usr/include/libmemcached /usr/include/libmemcached-1.0
pecl -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. Проверка установки

  1. Запустите /opt/phpfcgi-5.4.12/bin/php -v чтобы убедиться в версии и загруженных расширениях.
  2. Создайте тестовую страницу phpinfo() в сайте, подключённом к этой версии PHP, чтобы проверить путь к php.ini и активные расширения.
  3. Проверьте логи веб-сервера и PHP-FPM/CGI для ошибок при старте.

7. Безопасность и практические рекомендации

  • Патчи безопасности для PHP 5.4 отсутствуют — по возможности используйте контейнеризацию, изоляцию приложений или VPN-сети, если вынуждены оставаться на устаревшей версии.
  • Ограничьте права файлов и каталогов: исполняемый PHP и расширения должны быть доступны только root и пользователю веб-пула.
  • Регулярно мониторьте логи на предмет необычной активности и ошибок.

Мини-методология: последовательность действий

  1. Подготовка окружения и резервные копии.
  2. Установка зависимостей.
  3. Конфигурация ./configure под ваши нужды.
  4. make && make install.
  5. Настройка php.ini и расширений.
  6. Интеграция с ISPConfig и тестирование.
  7. Мониторинг и фолбэки.

Критерии приёмки

  • 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.

Ссылки

Об авторе

Falko Timme — владелец Timme Hosting (ultra-fast nginx web hosting), ведущий поддерживающий HowtoForge (с 2005) и один из ключевых разработчиков ISPConfig (с 2000). Он также участвовал в книге O’Reilly «Linux System Administration».

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Устранение ошибки Epson 1131: полное руководство
Поддержка принтеров

Устранение ошибки Epson 1131: полное руководство

Отключить Bluetooth в Arch Linux быстро и безопасно
Linux

Отключить Bluetooth в Arch Linux быстро и безопасно

Windows netstat: прослушиваемые порты
Сеть

Windows netstat: прослушиваемые порты

Ограничения ресурсов в Kubernetes: CPU, память и хранилище
Kubernetes

Ограничения ресурсов в Kubernetes: CPU, память и хранилище

Вредоносное ПО в облаке: что это и как защититься
Кибербезопасность

Вредоносное ПО в облаке: что это и как защититься

Установка и настройка tmux в Linux
Linux

Установка и настройка tmux в Linux