Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/php/profiles ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/devel/php/profiles за 2005-10-31 20:10:30..

Профили


Всякое может случиться, иногда бывает очень удобно зафиксировать состояние конфигурации в нескольких критичных точках, а потом менять эти состояния одной командой.


При этом важно чтобы изменялось именно состояние интерпретатора, а не его конфигурационного файла. Ведь этот файл только инструмент для задания/корректировки поведения PHP. Так например если в php.ini не указывать директиву safe_mode, то в большенстве сборок (это зависит от ключей сборки) она бутет включена. Другими словами чтобы понять в каком стотоянии находиться интерпретатор нужно учитывать его настройки по умолчанию.


В реализации это функсиональности на поможет control(8)?.

Настройка


В PHP существует возможность создавать профили для php.ini. Для каждого профиля вы можете указывать директивы и их значения, критичные для данного профиля конфигурации. По умолчанию профилей три и они соотвестствуют разным уровням безопасности:


Для получения более подробного описания об этих уровнях вы можете воспользоваться командой:
$ control <FACILITY> help


Если по каким-либо причинам вам не нравятся профили по умолчанию, вы можете создасть собственный профиль.

Создание дополнительных профилей


Вы можете создавать свои собственные профили конфигурации. Для этих целей используется директория:
/etc/php/<VERSION>/<SAPI>/control.d/


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


Чтобы описать профиль используется функция “php_rule”. Формат у нее следующий:


php_rule <MODE> <DIRECTIVE> <VALUE> [ <INTRERNAL_VALUE> ]


где
<MODE> – это имя профиля;
<DIRECTIVE> – это название директивы в php.ini .
<VALUE> – требуемое значение для <DIRECTIVE>.


дополнительный необязательный параметр:
<INTRERNAL_VALUE> – значение в понимании PHP. Дело в том, что не все значения интерпретатор использует в том виде в котором они определены в php.ini. Например: “E_ALL & E_NOTICE" -> “2039”


Также есть несколько переменных, которые можно и нужно использовать:
PHP_SAPI – имя SAPI модуля.
PHP_VERSION – версия PHP.
PHP_INI – эта переменная содержит путь до php.ini .
php_on – значение истины.
php_off – значение ложь.


Вот и пока всё ...


Давайте теперь по практикуемся ... создадим профиль подназванием «сrazyfrog».


Файл /etc/php/4.4.1/cli/control.d/crazyfrog:
php_rule “crazyfrog” “safe_mode” "$php_on”
php_rule “crazyfrog” “post_max_size” “1M”
php_rule “crazyfrog” “error_reporting” “E_ALL & E_NOTICE" “2039”
php_rule “crazyfrog” “extension_dir” «/usr/lib/php/$PHP_VERSION/extensions/»


Теперь можно сказать:


$ control php4_cli list
crazyfrog restricted relaxed public
$


Описание того что будет измененино этим профилем атоматически добавляется в сообщение help:


$ control php4_cli help
crazyfrog: Following directives shuild be changed/added at `crazyfrog' security mode.

safe_mode = On
post_max_size = “1M”
error_reporting = E_ALL & E_NOTICE
extension_dir = «/usr/lib/php/4.4.1/extensions/»

... тут остальной help ...
$


Вуаля.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]