Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37895106
en ru br
Репозитории 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
www.altlinux.org/Changes

Группа :: Разработка/Прочее
Пакет: 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
соответственно.

 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin