[devel] PHP 5.3.3 [was: Прототипы дизайна интерфейсов Кентавра]

Sergey Vlasov vsu на altlinux.ru
Вт Авг 10 19:01:27 UTC 2010


On Tue, Aug 10, 2010 at 07:13:31PM +0400, Alexey Gladkov wrote:
> On 10.08.2010 13:49, Slava Dubrovskiy wrote:
[...]
> > 2. Зачем конфиги располагаются в версийзависимых директориях?
> 
> Чтобы можно было держать несколько php разных версий одновременно.

Вопрос в том, насколько разных?  Т.е., нужно ли обеспечивать
теоретическую возможность наличия рядом, например, 5.2.13 и 5.2.14?

Кстати, использованный метод реализации (php_ini_path_override в
каждом sapi) в некоторых случаях ведёт себя не так, как оригинальный
(например, если установлена переменная PHPRC, но в указанном там
каталоге нет php.ini, системный php.ini не будет найден).  Возможно,
применённая схема была не совсем правильной (вместо засовывания
каждого sapi в отдельный каталог можно было собирать php с
--with-config-file-path=%php5_sysconfdir, а для поддержки отдельных
файлов конфигурации для разных sapi создавать там файлы php-SAPI.ini,
не трогая стандартный механизм поиска).

Впрочем, основная проблема в наличии в php.ini настроек, зависящих от
версии php - safe_mode_include_dir, include_path, extension_dir,
alt_sapi_config_ini_scan_dir, из-за которых при изменении версии php в
любом случае придётся править этот файл.  Причём введение переменной
alt_sapi_config_ini_scan_dir, насколько я понял, вызвано главным
образом желанием использовать отдельные каталоги для разных sapi (в
противном случае хватило бы опять-таки сборки с нужным значением
--with-config-file-scan-dir); в принципе это место можно попытаться
пропатчить для использования php-SAPI.d и избавиться от переменной в
php.ini (которая тоже добавлена патчем).

Ещё можно попробовать перенести в main/main.c инициализацию части
констант (как минимум PHP_VERSION) до вызова php_init_config(); тогда
можно будет писать в php.ini что-то типа

  alt_sapi_config_ini_scan_dir = "/etc/php/" PHP_VERSION "/cli/php.d"

Кстати, в ветке 5.3 это изменение порядка инициализации уже сделано.
Тогда можно будет иметь php.ini с содержимым, не зависящим от версии,
и, например, по умолчанию класть в каталог с конкретным номером версии
симлинк на файл из каталога php-5.2 (или 5.3 - их, видимо, всё-таки
придётся разносить), а уже те файлы просто объявить как %config.
Правда, остаётся открытым вопрос с обновлением фрагментов конфигурации
для расширений.

> > Обновление php это просто ад. Приходится вручную проверять все изменения
> > и вносить их заново.
> 
> Если происходит обновление по минорной версии, то достаточно
> переместить конфиги.

Однако автоматически это не происходит.  Можно допустить, что при
обновлении типа 5.2.x -> 5.3.x что-то действительно нужно менять
вручную, но в пределах одной ветки (как сейчас, 5.2.13 -> 5.2.14)
хотелось бы хоть какой-то автоматизации.

> > 3. Зачем safe-mode включен по умолчанию? 
> 
> Не знаю как сейчас, но раньше я делал для этих целей control. В одном
> из его профилей все гайки были раскручены. Также был реализован
> механизм для создания своих профилей для control.

control там и сейчас есть, но при обновлении пакета опять-таки не
помогает.  Файлы для создания своих профилей кладутся в каталог с
жёсткой зависимостью от номера версии php - т.е., при обновлении
минорной версии эти файлы тоже придётся перекладывать.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100810/b6c695c7/attachment.bin>


Подробная информация о списке рассылки Devel