From: Alexey Gladkov <legion@altlinux.ru> To: ALT Devel discussion list <devel@altlinux.ru>, Sisyphus mailing list <sisyphus@altlinux.ru> Subject: [sisyphus] PHP 4.3.4 upgrade Date: Tue, 21 Oct 2003 19:04:09 +0400 Message-ID: <20031021150409.GC20723@legion.office.altlinux.ru> (raw) Приветствую !!! В Daedalus ушела новая сборка PHP 4.3.4 CVS 20031017. В ней произошли изменения в расположении конфигурационных файлов, а также в системе создания модулей. Просьба всех заинтересованных лиц протестировать эту сборку и высказать свои замечания/пожелания по ней. Эта сборка останется в Daedalus до конца недели, если замечаний не последует она переедит в Sisyphus. bugs: из-за того, что rpm не делает обратную сортировку при удалении зависимых пакетов php удаляется некорректно. solution: необходимо сначала удалить все пакеты зависящие от php-common, после этого удалить пакет php-common. Теперь о проведенных изменениях: Конфигурация. Интерпретатор 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: * exceptions - в этой переменной перечисляются SAPI модули, для которых расширение _не_должно_ быть включено. * 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. Должны быть созданы директории: * %php_sysconfdir/%php_sapi - это директория, в которой хранится вся конфигурация php, относящаяся к этому SAPI. В этой директории ищется основной файл конфигурации - php.ini . * %php_sysconfdir/%name/php.d - в этой директории осуществляется поиск расширений для php.ini . Создание Extension модуля. Создание модулей расширений во многом похоже на создание SAPI модулей. Исходные тексты всех SAPI модулей, официально входящих в проект PHP, находятся в директории: %php_extsrcdir . В SPEC файле модуля расширения необходимо: 1. Определить переменную %php_extension - это название модуля, которое будет подставлено вместо <EXTENSION>. 2. Необходимо создать файлы: * %php_extconf/%php_extension/config * %php_extconf/%php_extension/params назначение и содержимое этих файлов было описано выше (см. Сборка модулей). 3. В секциях postin/preun среди всего прочего необходимо добавить макросы %php_extension_postin и %php_extension_preun соответственно. Все rpm макросы описаны в файле %_sysconfdir/rpm/macros.d/php, принадлежащем пакету php-devel. --- Rgrds, legion
next reply other threads:[~2003-10-21 15:04 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-10-21 15:04 Alexey Gladkov [this message] 2003-10-23 5:35 ` vic ismakaev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20031021150409.GC20723@legion.office.altlinux.ru \ --to=legion@altlinux.ru \ --cc=devel@altlinux.ru \ --cc=sisyphus@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \ sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru public-inbox-index sisyphus Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sisyphus AGPL code for this site: git clone https://public-inbox.org/public-inbox.git