Php/profiles

Материал из ALT Linux Wiki

< Php(Различия между версиями)
Перейти к: навигация, поиск
(Создание дополнительных профилей)
 
(1 промежуточная версия не показана)
Строка 25: Строка 25:
Вы можете создавать свои собственные профили конфигурации. Для этих целей используется директория: <tt>/etc/php/<VERSION>/<SAPI>/control.d/</tt>
Вы можете создавать свои собственные профили конфигурации. Для этих целей используется директория: <tt>/etc/php/<VERSION>/<SAPI>/control.d/</tt>
-
В этой директории находятся описания дополнительных профилей. Они могут находиться как в одном файле, так и в разных. Все что будет находится в этой директории будет использоваться. Поэтому в этой служебной директории не должно быть посторонних файлов.  
+
В этой директории находятся описания дополнительных профилей. Они могут находиться как в одном файле, так и в разных. Все что будет находится в этой директории будет использоваться. Поэтому в этой служебной директории не должно быть посторонних файлов.
-
Чтобы описать профиль используется функция "php_rule". Формат у нее следующий:
+
Чтобы описать профиль используется функция «php_rule». Формат у нее следующий:
<tt>php_rule <MODE> <DIRECTIVE> <VALUE> [ <INTRERNAL_VALUE> ]</tt>
<tt>php_rule <MODE> <DIRECTIVE> <VALUE> [ <INTRERNAL_VALUE> ]</tt>
где
где
-
''<MODE>'' - это имя профиля
+
* ''<MODE>'' — это имя профиля
-
''<DIRECTIVE>'' - это название директивы в php.ini
+
* ''<DIRECTIVE>'' — это название директивы в php.ini
-
''<VALUE>'' - требуемое значение для ''<DIRECTIVE>''
+
* ''<VALUE>'' — требуемое значение для ''<DIRECTIVE>''
дополнительный необязательный параметр:
дополнительный необязательный параметр:
-
''<INTRERNAL_VALUE>'' - значение в понимании PHP. Дело в том, что не все значения интерпретатор использует в том виде в котором они определены в php.ini. Например: "E_ALL & E_NOTICE&quot; -> "2039"
+
* ''<INTRERNAL_VALUE>'' — значение в понимании PHP. Дело в том, что не все значения интерпретатор использует в том виде в котором они определены в php.ini. Например: «E_ALL & E_NOTICE» -> «2039»
Также есть несколько переменных, которые можно и нужно использовать:
Также есть несколько переменных, которые можно и нужно использовать:
-
''PHP_SAPI''           - имя SAPI модуля.
+
* ''PHP_SAPI'' — имя SAPI модуля.
-
''PHP_VERSION'' - версия PHP.
+
* ''PHP_VERSION'' — версия PHP.
-
''PHP_INI''             - эта переменная содержит путь до php.ini .
+
* ''PHP_INI'' — эта переменная содержит путь до php.ini .
-
''php_on''               - значение истины.  
+
* ''php_on'' — значение истины.
-
''php_off''               - значение ложь.
+
* ''php_off'' — значение ложь.
-
Вот и пока всё ...
+
Вот и пока всё
-
Давайте теперь попрактикуемся ... создадим профиль подназванием "сrazyfrog".
+
Давайте теперь попрактикуемся создадим профиль подназванием «сrazyfrog».
-
Файл /etc/php/4.4.1/cli/control.d/crazyfrog:
+
Файл {{path|/etc/php/4.4.1/cli/control.d/crazyfrog}}:
-
php_rule "crazyfrog" "safe_mode"         "$php_on"
+
<pre>
 +
php_rule "crazyfrog" "safe_mode"       "$php_on"
php_rule "crazyfrog" "post_max_size"  "1M"
php_rule "crazyfrog" "post_max_size"  "1M"
-
php_rule "crazyfrog" "error_reporting" "E_ALL & E_NOTICE&quot; "2039"
+
php_rule "crazyfrog" "error_reporting" "E_ALL & E_NOTICE" "2039"
-
php_rule "crazyfrog" "extension_dir"     "/usr/lib/php/$PHP_VERSION/extensions/"
+
php_rule "crazyfrog" "extension_dir"   "/usr/lib/php/$PHP_VERSION/extensions/"
 +
</pre>
Теперь можно сказать:
Теперь можно сказать:

Текущая версия на 16:53, 23 декабря 2008

Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.

Профили

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

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

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

Настройка

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

  • restricted
  • relaxed
  • public

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

$ 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 ...

Вуаля.


 
Личные инструменты