Php/rpm
Сборка модулей
Чтобы реализовать гибкую структуру для установки и конфигурирования модулей и SAPI придется решить несколько проблем связанных с модульностью, за которой мы так гонимся (закон сохранения энергии действует даже здесь ).
Первая проблема заключается в том, что возможна ситуация, когда очередной SAPI модуль будет установлен после того как были установлены несколько пакеров с расширениями. В этом случае, SAPI должен узнать обо всех расширениях PHP (и их конфигурации), установленных до SAPI.
Вторая -- это несовместимость некоторых расширений PHP с некоторыми SAPI. Следовательно, определенные расширения не должны быть включены для одних SAPI и выключены для других.
Для решения этих проблем был создана следующая структура:
- /usr/share/php/extconf/<EXTENSION>/ - директория, содержащая конфигурацию для данного расширения.
- /usr/share/php/extconf/<EXTENSION>/config - в этом файле должна находится конфигурация php, специфичная для этого модуля (например, в этом файле может указываться директива подключения модуля "extension=mysql.so").
- /usr/share/php/extconf/<EXTENSION>/params - здесь находится конфигурация, необходимая для включения данного модуля в разных SAPI:
- exceptions - в этой переменной перечисляются SAPI модули, для которых расширение не должно быть включено.
- file_ini - здесь необходимо указать имя конфигурационного файла (например "file_ini=mysql.ini")
- /usr/share/php/service/<SAPI>/ - в этой директории находятся скрипт(ы) для перезагрузки конфигурации на сервере, для которого предназначен данный SAPI.
- /usr/share/php/scripts/ - содержит скрипты для включения/выключения какого-либо расширения.
См. также: Создание RPM пакета для SAPI модуля Создание RPM пакета для расширения PHP Создание модулей, написанных на PHP