Репозитории ALT
5.1: | 5.2.14.20100721-alt0.M51.1 |
4.1: | 5.2.5-alt1.M41.3 |
4.0: | 5.2.2-alt1 |
3.0: | 5.0.5-alt0.cvs20050729 |
Группа :: Разработка/Прочее
Пакет: php5
Главная Изменения Спек Патчи Исходники Загрузить Gear Bugs and FR Repocop
Конфигурация.
=============
Интерпретатор PHP имеет модульную структуру - SAPI
(http://php.net/install).
Модулями SAPI являются расширения каких-либо сервисов.
Модулями расширения (extensions) являются модули добавляющие
функциональность к модулям SAPI. Все эти модули должны (или могут
быть) сконфигурированы независимо друг от друга. Кроме наличия файла
конфигурации должна быть возможность независимого добавления модулей
расширений (extensions) к каждому из SAPI. Расширения, в свою очередь,
должны добавляться без изменения остальной конфигурации. Поэтому для
конфигурирования PHP (SAPI модулей) была введена следующая структура
каталогов:
/etc/php/<SAPI>/php.ini
/etc/php/<SAPI>/php.d/<EXTENSION>.ini
где SAPI - имя модуля;
EXTENSION - название расширения.
В начале работы SAPI модуль читает основную конфигурацию из файла
'php.ini', находящегося в директории, отведенной для него
(/etc/php/<SAPI>). После этого модуль просматривает директорию,
содержащую расширения для конфигурационного файла
(/etc/php/<SAPI>/php.d).
ВАЖНО!: Все расширения должны содержать суффикс 'ini', иначе они
игнорируются и не добавляются к конфигурации.
Сборка модулей.
===============
При создании подобной модульной структуры (см. Конфигурация) возникает
ряд проблем, связанных с расширениями и SAPI модулями.
Первая проблема заключается в том, что возможна (и весьма вероятна)
ситуация, когда определенное количество расширений было установлено в
систему до того, как был установлен SAPI (еще один) модуль. В этом
случае, необходимо включить все расширения для новоустановленого SAPI.
Вторая -- это несовместимость некоторых расширений с некоторыми
SAPI. Следовательно, определенные расширения не должны быть
включены для одних SAPI и выключены для других.
Для решения этих проблем был создана следующая структура:
1. /usr/share/php/extconf/<EXTENSION>/ - директория, содержащая
конфигурацию для данного расширения.
1.1. /usr/share/php/extconf/<EXTENSION>/config - в этом файле должна
находится конфигурация php, специфичная для этого модуля (например, в
этом файле указывается директива подключения этого модуля
"extension=mysql.so").
1.2. /usr/share/php/extconf/<EXTENSION>/params - здесь находится
конфигурация, необходимая для включения данного модуля в разных SAPI:
1.2.1. exceptions - в этой переменной перечисляются SAPI модули, для
которых расширение _не_должно_ быть включено.
1.2.2. file_ini - здесь необходимо указать имя конфигурационного файла
(например "file_ini=mysql.ini")
2. /usr/share/php/service/<SAPI>/ - в этой директории находятся
скрипт(ы) для перезагрузки конфигурации на сервере, для которого
предназначен данный SAPI.
3. /usr/share/php/scripts - содержит скрипты для включения/выключения
какого-либо расширения.
Создание SAPI модуля.
=====================
Для более простого создания пакетов SAPI модулей был создан набор rpm
макросов.
Исходные тексты всех SAPI модулей официально входящих в проект PHP
находятся в директории: %php_extsapidir .
В SPEC файле SAPI необходимо:
1. Необходимо определить переменную php_sapi. Она определяет
название SAPI модуля. Именно это имя будет фигурировать вместо <SAPI>
в предыдущих пунктах.
2. Для секций postin/preun необходимо пользоваться специальными
макросами %php_sapi_postin , %php_sapi_preun. Эти скрипты производят
включение/выключение модулей расширений для данного SAPI и
последующий перезапуск сервиса.
3. Необходимо создать скрипт для перезагрузки конфигурации сервиса
обслуживаемого этим SAPI. Этот скрипт должен располагаться в
%php_servicedir/%php_sapi/condrestart
4. Должны быть созданы директории:
4.1. %php_sysconfdir/%php_sapi - это директория, в которой хранится
вся конфигурация php, относящаяся к этому SAPI. В этой директории
ищется основной файл конфигурации - php.ini .
4.2. %php_sysconfdir/%name/php.d - в этой директории осуществляется
поиск расширений для php.ini .
Создание Extension модуля.
==========================
Создание модулей расширений во многом похоже на создание SAPI модулей.
Исходные тексты всех SAPI модулей, официально входящих в проект PHP,
находятся в директории: %php_extsrcdir .
В SPEC файле модуля расширения необходимо:
1. Определить переменную %php_extension - это название модуля, которое
будет подставлено вместо <EXTENSION>.
2. Необходимо создать файлы:
2.1. %php_extconf/%php_extension/config
2.2. %php_extconf/%php_extension/params
назначение и содержимое этих файлов было описано выше (см. Сборка
модулей).
3. В секциях postin/preun среди всего прочего необходимо добавить
макросы %php_extension_postin и %php_extension_preun соответственно.
Все rpm макросы описаны в файле %_sysconfdir/rpm/macros.d/php,
принадлежащем пакету php-devel.
Создание модулей, написанных на PHP.
====================================
Существуют проекты/модули написанные на PHP и расширяющие его
функциональность. Такие модули являются платформонезависимыми и для
них не требуется компиляция.
Для таких модулей была создана следующая система каталогов:
/usr/share/php/modules/<MODULE_NAME>
/usr/share/php/<PHP_VERSION>/modules/<MODULE_NAME>
Данные директории предназначены для расположения модуля
<MODULE_NAME>. Первая директория предназначена для модуля не
зависящего от версии PHP. Вторая директория для модулей работающих под
конкретной версией PHP.
Этим директориям соответствуют макросы %php_moddir и %php_vermoddir
соответственно.